[웹 개발자가 꼭 알아야 할]
Ajax 보안
- 원서명Ajax Security (ISBN 9780321491930)
- 지은이빌리 호프만, 브라이언 설리번
- 옮긴이고현영, 윤평호
- ISBN : 9788960770645
- 30,000원
- 2008년 11월 10일 펴냄 (절판)
- 페이퍼백 | 496쪽 | 188*250mm
- 시리즈 : 해킹과 보안
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
[ 소개 ]
수많은 웹사이트가 Ajax 애플리케이션으로 재탄생하고 있다. 전통적인 데스크탑 소프트웨어도 Ajax를 이용한 웹으로 바뀌고 있다. 하지만 보안과 관련된 문제가 종종 간과되고 있는 것이 현실이다. 제대로 설계하지 않고 코딩하지 않으면 전통적인 웹이나 데스크탑 소프트웨어보다 훨씬 더 보안에 취약할 수밖에 없다. Ajax 개발자는 애플리케이션 보안과 관련된 가이드가 필요하다. 지금까지 발견되지 않은 문제에 대해서도 가이드가 필요하다.
『Ajax 보안』은 Ajax에 대해 갖고 있는 환상의 잘못된 점을 체계적으로 설명하며 지적하고 있다. 마이스페이스(MySpace)의 새미 웜(Samy worm) 같은 실례를 들며 보안 관련 핵심 개념을 소개하고, Ajax 취약점이 어떻게 악용되는지 자세히 설명하고 있다. 더 나아가 .NET, 자바, PHP처럼 널리 쓰이는 웹 프로그래밍 언어와 환경에서 Ajax 애플리케이션을 작성하기 위한 특별하면서도 최신의 권고사항을 알려주고 있다.
[ 이 책에서 다루는 내용 ]
■ 관련 기능을 세분화해 제공하는 웹 서비스에서 발생하는 문제, 애플리케이션 제어 절차 조작, 프로그램 로직 조작 등의 피해를 최소화하는 법
■ 자바스크립트 하이재킹, 영속적인 스토리지 강탈, 매시업 악용 등 Ajax 공격 방지법
■ 단 두 번의 요청으로 백엔드 DB 전체 내용을 추출할 수 있는 Ajax 기반 SQL 인젝션 변종 형태의 공격 등 XSS와 SQL 인젝션 기반 공격을 피하는 방법
■ 구글 기어와 도조(Dojo)를 이용한 보안 오프라인 Ajax 애플리케이션 개발 방법
■ 프로토타입(Prototype), DWR, ASP.NET AJAX 같은 Ajax 프레임워크에 보안 개념을 적용하고 프레임워크의 보안상 취약한 부분을 파악하고 보안 코드를 작성하는 방법
■ 새로 작성하는 Ajax 코드를 좀 더 안전하게 작성하는 방법. 기존 코드에 있는 보안 문제를 감지, 수정하는 방법
[ 이 책의 대상 독자 ]
『Ajax 보안』은 Ajax 애플리케이션을 개발하고 유지보수할 사람이나, 새로운 Ajax 소프트웨어를 기획하고 설계할 사람, QA 전문가에서 문제를 점검하는 테스터에 이르기까지 모든 보안 전문가는 물론, 웹 개발자들도 꼭 읽어야 할 필독서다.
목차
목차
- 1장 Ajax 보안 소개
- Ajax 첫걸음.... 30
- Ajax란 무엇인가?.... 30
- 비동기 방식.... 32
- 자바스크립트.... 34
- XML.... 40
- DHTML(다이내믹 HTML).... 40
- Ajax 아키텍처로의 패러다임 전환.... 40
- 무거운 클라이언트 아키텍처.... 41
- 가벼운 클라이언트 아키텍처.... 42
- Ajax: 아키텍처계의 금발 미녀.... 44
- 보안 관점에서 본 무거운 클라이언트 애플리케이션.... 45
- 보안 관점에서 본 가벼운 클라이언트 애플리케이션.... 46
- 보안 관점에서 본 Ajax 애플리케이션.... 47
- 보안 취약점의 재앙.... 48
- 복잡도, 투명성 그리고 규모의 확장.... 48
- 사회학적인 이슈.... 51
- Ajax 애플리케이션: 매력적인 전략 목표.... 52
- 결론.... 53
- Ajax 첫걸음.... 30
- 2장 보이지 않는 도둑
- 이브.... 55
- HighTechVacations.net 해킹.... 56
- 쿠폰 시스템 해킹.... 57
- 클라이언트단 데이터 바인딩 공격.... 62
- Ajax API 공격.... 67
- 보이지 않는 도둑.... 72
- 3장 웹 공격
- 공격의 종류.... 75
- 리소스 열거.... 76
- 파라미터 조작.... 80
- 그 밖의 공격 방법.... 104
- 크로스 사이트 요청 변조.... 105
- 피싱.... 106
- 서비스 거부 공격.... 107
- 리소스 열거와 파라미터 조작으로부터 보호하라.... 107
- 보안 소켓 계층.... 108
- 결론.... 108
- 공격의 종류.... 75
- 4장 Ajax 공격 영역
- 공격 영역의 이해.... 109
- 전통적인 웹 애플리케이션 공격 영역.... 111
- 폼 입력.... 111
- 쿠키.... 112
- 헤더.... 113
- 숨겨진 폼 입력.... 114
- 쿼리 파라미터.... 114
- 업로드 파일.... 117
- 전통적인 웹 애플리케이션 공격: 성적표.... 118
- 웹 서비스 공격 영역.... 120
- 웹 서비스 메소드.... 120
- 웹 서비스 정의.... 122
- Ajax 애플리케이션 공격 영역.... 122
- Ajax 애플리케이션 공격 영역의 근원.... 124
- 해커에게 최고의 먹잇감.... 125
- 적절한 입력 확인.... 126
- 블랙리스트와 특별 조치의 문제.... 127
- 병 대신 병의 징후 다루기.... 130
- 화이트리스트 입력 검증.... 133
- 정규 표현.... 137
- 입력 검증에 대한 숙고.... 137
- 리치 사용자 입력 검증.... 139
- 마크업 언어 검증.... 139
- 이진 파일 검증.... 141
- 자바스크립트 소스코드 검증.... 142
- 시리얼라이즈 데이터 검증.... 148
- 사용자 지원 콘텐츠의 신화.... 151
- 결론.... 152
- 5장 Ajax 코드 복잡도
- 다양한 언어와 구조.... 153
- 배열 인덱싱.... 154
- 스트링 연산.... 156
- 코드 주석.... 157
- 다른 사람의 문제.... 158
- 자바스크립트와 관련하여.... 160
- 인터프리트, 컴파일이 아니야.... 160
- 약한 타입 체크.... 161
- 비동기.... 163
- 경쟁 상태.... 163
- 데드락과 철학자의 식사 문제.... 167
- 클라이언트단 동기화.... 172
- 누구의 조언을 듣느냐가 중요하다.... 172
- 결론.... 173
- 다양한 언어와 구조.... 153
- 6장 Ajax 애플리케이션의 투명성
- 블랙박스와 화이트박스.... 175
- 예: MyLocalWeatherForecast.com.... 177
- 예: MyLocalWeatherForecast.com을 ‘Ajax’로.... 180
- 비교.... 184
- API로서의 웹 애플리케이션.... 184
- 데이터 타입과 메소드 시그너처.... 186
- 보안과 관련한 특정 오판.... 186
- 부당한 인증.... 186
- 기능이 나뉜 서버 API.... 188
- 자바스크립트에서의 세션 상태 저장.... 191
- 민감한 정보가 사용자에게 노출될 때.... 192
- 클라이언트단 코드에 있는 주석과 문서화.... 194
- 클라이언트단에서 수행하는 데이터 변환.... 194
- 모호함을 통한 보안.... 199
- 난독화.... 199
- 결론.... 201
- 블랙박스와 화이트박스.... 175
- 7장 Ajax 애플리케이션 하이재킹
- Ajax 프레임워크의 하이재킹.... 204
- 실수로 인한 함수 덮어쓰기.... 204
- 함수 덮어쓰기의 예.... 206
- 주문형 Ajax의 하이재킹.... 212
- JSON API의 하이재킹.... 217
- 객체 리터럴의 하이재킹.... 222
- JSON 하이재킹이 가능한 이유.... 223
- JSON 하이재킹을 막자.... 224
- 결론.... 227
- Ajax 프레임워크의 하이재킹.... 204
- 8장 클라이언트단 스토리지 공격
- 클라이언트단 스토리지 시스템 개관.... 229
- 일반적인 클라이언트단 스토리지 보안.... 231
- HTTP 쿠키.... 232
- 쿠키 접근 제어 규칙.... 234
- HTTP 쿠키의 저장용량.... 239
- 쿠키의 생존시간.... 243
- 쿠키 스토리지에 대한 추가 기억사항.... 243
- 쿠키 스토리지 요약.... 244
- 플래시 로컬 공유 객체.... 245
- 플래시 로컬 공유 객체 요약.... 253
- DOM 스토리지.... 254
- 세션 스토리지.... 255
- 글로벌 스토리지.... 257
- DOM 스토리지의 구멍.... 259
- DOM 스토리지 보안.... 261
- DOM 스토리지 요약.... 262
- 인터넷 익스플로러 userData.... 263
- 보안 요약.... 268
- 일반적인 클라이언트단 스토리지 공격법과 대처법.... 268
- 크로스 도메인 공격.... 269
- 크로스 디렉토리 공격.... 270
- 크로스 포트 공격.... 271
- 결론.... 271
- 클라이언트단 스토리지 시스템 개관.... 229
- 9장 오프라인 Ajax 애플리케이션
- 오프라인 Ajax 애플리케이션.... 273
- 구글 기어.... 275
- 자체 보안 기능과 구글 기어의 단점.... 276
- 작업풀의 이용.... 279
- LocalServer 데이터의 노출과 감염.... 281
- 구글 기어 데이터베이스로의 직접 접근.... 285
- SQL 인젝션과 구글 기어.... 286
- 클라이언트단 SQL 인젝션도 위험한가?.... 290
- Dojo.Offline.... 292
- 키를 안전하게 보호하자.... 293
- 데이터를 안전하게 보호하자.... 294
- 패스워드의 선택이 멋진 키를 좌우한다.... 296
- 클라이언트단 입력을 검증하자.... 296
- 오프라인 애플리케이션에 대한 그 밖의 접근법.... 298
- 결론.... 299
- 10장 요청 출처 이슈
- 로봇, 스파이더, 브라우저, 크롤러.... 301
- 안녕, 내 이름은 파이어폭스야. 청크화된 인코딩, PDF도
- 좋아하고 해변에서 오랫동안 산책하는 것도 좋아해.... 303
- 요청 출처 불확정성과 자바스크립트.... 304
- 웹 서버 관점에서 본 Ajax 요청.... 304
- 당신일까, 당신을 가장한 누구일까.... 307
- 자바스크립트로 HTTP 요청 보내기.... 309
- pre-Ajax 세계에서의 자바스크립트 HTTP 공격.... 312
- XMLHttpRequest로 콘텐츠 사냥하기.... 314
- XSS/XHR 조합 공격.... 318
- 방어.... 320
- 결론.... 322
- 로봇, 스파이더, 브라우저, 크롤러.... 301
- 11장 웹 매시업과 애그리게이터
- 머신에서 활용하는 인터넷 데이터.... 324
- 90년대 초기: 웹의 시대가 오다.... 324
- 90년대 중반: 머신 웹의 탄생.... 325
- 2000년대: 머신 웹의 성숙기.... 326
- 공개적으로 사용 가능한 웹 서비스.... 327
- 매시업: 웹의 프랑켄슈타인.... 329
- ChicagoCrime.org.... 330
- HousingMaps.com.... 331
- 그 밖의 매시업.... 332
- 매시업 생성.... 333
- 매시업과 Ajax.... 334
- 브리지, 프록시, 게이트웨이 - 이런!.... 336
- Ajax 프록시 대안.... 337
- Ajax 프록시 공격.... 338
- HousingMaps.com?.... 340
- 매시업의 입력 검증.... 342
- 애그리게이트 사이트.... 345
- 보안과 신뢰가 떨어지는 상황.... 352
- 결론.... 356
- 머신에서 활용하는 인터넷 데이터.... 324
- 12장 프리젠테이션 계층에 대한 공격
- 프리젠테이션의 콘텐츠 괴롭히기.... 357
- 프리젠테이션 계층에 대한 공격.... 361
- CSS에서 정보 가져오기.... 362
- 해킹의 룩앤필.... 365
- 발전된 형태의 해킹 룩앤필.... 368
- 삽입된 프로그램 로직.... 372
- CSS 요소.... 374
- 브라우저 캐시 수정.... 376
- 프리젠테이션 계층 공격 방지.... 379
- 결론.... 380
- 13장 자바스크립트 웜
- 자바스크립트 웜 개요.... 383
- 기존의 컴퓨터 바이러스.... 384
- 자바스크립트 웜.... 387
- 자바스크립트 웜의 구성.... 389
- 자바스크립트의 한계.... 391
- 자바스크립트 웜의 복제.... 392
- 자바스크립트 웜 실행부.... 392
- 중간 정리.... 401
- 사례 연구: 새미 웜.... 401
- 어떻게 동작하는가.... 402
- 바이러스 실행부.... 405
- 새미 웜에 대한 결론.... 407
- 사례 연구: 야매너 웜(JS/Yamanner-A).... 408
- 어떻게 동작하는가.... 409
- 바이러스 실행부.... 412
- 야매너 웜에 대한 결론.... 413
- 실제 자바스크립트 웜에서 배우는 교훈.... 415
- 결론.... 417
- 자바스크립트 웜 개요.... 383
- 14장 Ajax 애플리케이션 테스트
- 블랙 매직.... 420
- 모든 사람이 웹 브라우저를 이용해 웹 서핑을 하는 것은 아니다..... 424
- Catch-22.... 426
- 보안 테스트 도구 - 생각만큼 멋지지는 않군요.... 427
- 사이트 목록 생성.... 428
- 취약점 탐지.... 430
- 분석 도구: Sprajax.... 431
- 분석 도구: Paros Proxy.... 434
- 분석 도구: LAPSE.... 436
- 분석 도구: WebInspect™.... 437
- 보안 테스트에 대한 숙고.... 439
- 15장 Ajax 프레임워크 분석
- ASP.NET.... 441
- ASP.NET AJAX(이전에 ATLAS).... 442
- ScriptService.... 446
- 보안성 비교: UpdatePanel과 ScriptService.... 447
- ASP.NET AJAX와 WSDL.... 448
- ValidateRequest.... 452
- ViewStateUserKey.... 453
- ASP.NET 환경설정과 디버깅.... 454
- PHP.... 456
- Sajax.... 456
- Sajax와 크로스 사이트 요청 변조.... 458
- Java EE.... 460
- DWR.... 460
- 자바스크립트 프레임워크.... 462
- 클라이언트단 코드에서 주의할 사항.... 463
- Prototype.... 464
- 결론.... 466
- ASP.NET.... 441
- 부록 A 새미 웜 소스코드.... 467
관련 블로그 글
웹 개발자라면 반드시 읽어야 할 첫 "Ajax 보안" 책
빌리 호프만, 브라이언 설리번 지음 | 고현영, 윤평호 옮김
496쪽 | 30,000원 | 2008년 11월 10일 출간예정 | 해킹·보안 시리즈 18
어느 때부터인가 조금씩 우리의 웹 생활을 조금씩 바꿔놓은 Ajax 기술. 몇 년 사이 급부상해 웹 개발의 스타로 떠오른 Ajax는 새로운 기술이 아닌, 이미 존재하던 자바스트립트와 비동기성을 이용한 기술입니다. 그렇기에 그 두 가지에서 발생하는 문제를 고스란히 간직하고 있었습니다.
'빛이 밝으면 그림자의 어둠도 깊다'는 말처럼 Ajax에 비춰진 화려한 스포트라이트 뒤에는 우리가 간과하거나 알면서도 애써 덮어두려 했던 문제점이 하나둘 부각되기 시작했습니다. Ajax는 서버에 요청하는 코드를 클라이언트 단에 두고 움직이는 자바스크립트에 기반한 기술이기 때문에 보안에 취약한 약점을 태생적으로 지니고 있었던 거죠. 따라서 Ajax 보안에 대한 문제점은 누구나 인식을 하면서도 마치 뜨거운 감자라서 함부로 건드리지 못하는 채로 방치되고 있었습니다.
드디어 누구나 쉽게 이해할 수 있도록 보안 전문가가 아닌 웹 개발자의 관점을 최대한 고려해 Ajax 보안을 기술한 책이 출간됐습니다.
이 책은 보안 전문가라면 반드시 알고 있어야 할 내용이지만, 그보다는 실제로 Ajax 웹 애플리케이션을 만드는 웹 개발자를 대상 독자로 하는 책이기 때문에 딱히 보안 전문가가 아니더라도 웹 개발자가 쉽게 이해할 수 있도록 구성했습니다. 저자는 일상생활에서 일어날 수 있는 쉬운 예를 통해 보안 개념과 발생가능한 문제를 설명하고 있습니다.
예를 들면, 8장에서 통화시 말끝마다 큰 소리로 특정 문구를 얘기하는 빌리라는 사람의 사례를 들어, 매번 요청문을 보낼 때마다 쿠키를 첨부해야하는 특성과 쿠키에서 발생할 수 있는 문제점이 무엇인지 지적하고 있습니다. 이 외에도 은행과 쇼핑몰의 비유, 클럽에 들어갈 수 있는 자격을 가진 사람의 비유, 블랙 박스와 화이트 박스의 비유를 들어가며 보안에 대한 개념을 단계별로 접근하기 쉽게 설명하고 있습니다.
1장부터 7장까지는 Ajax의 기본개념부터 관련 기술, 개발시에 발생할 수 있는 여러 핵심 보안 이슈를 설명합니다. Ajax, XMLHttpRequest(XHR), XML, DHTML, 서버-클라이언트 프로그래밍시 고려할 사항 등 Ajax를 쓰면서 다뤄야 할 기술의 핵심 내용과 이런 기술간의 연동시 고려해야 할 사항을 언급하는데, 앞에서 이야기 했듯이 여러 보안 이슈를 실제 일상생활 예를 들어가며 설명하고 있기에 이해하기 쉽습니다.
8장부터 12장까지가 이 책의 핵심이라고 할 수 있습니다. 클라이언트단 스토리지, 오프라인 Ajax 애플리케이션, 요청 출처 이슈, 매시업 등 고급 주제에 대해 다룹니다. 국내 개발자들이 사용은 해봤지만 취약한 부분이 무엇인지 모르거나 혹은 그 개념이 어려워서 접근하기 어려웠던 기술을 쉽게 설명하며 문제점과 해법을 제시합니다.
13장에서 15장까지는 자바스크립트 웜, 테스트할 때의 마음가짐, Ajax 프레임워크에서 발생할 수 있는 보안이슈에 대해 설명합니다.
이처럼 이 책에서는 전반적으로 문제가 될 수 있는 Ajax 코드와 이에 대한 해법을 제시하며, 무엇보다도 실제 코드 사례나 비유를 통해 웹 개발자도 누구나 이해하기 쉽게 쓰여졌다는 것이 포인트입니다. 그리고 웹 개발자들이 간과했던 보안 이슈, 스레드간의 경쟁상태에서 발생할 수 있는 오동작으로 인한 취약점, 프레임워크 사용시 발생할 수 있는 보안 문제 등을 다룹니다.
또한 이 책 전반을 통해 저자는 입력 검증(validation)의 중요성과, 중요한 로직은 서버단에 두고 클라이언트단에는 두지 말것을 일관되게 설파합니다.
계속 말씀드리지만 Ajax 웹 애플리케이션 보안 문제에 대해 "이거다!"라고 내놓을 수 있을 만한 정답을 찾기란 쉽지 않습니다. 그러나 이 책을 읽으면 그동안 간과했던 문제에 대한 경각심이나 통찰력을 키울 수 있을 것이라 생각합니다.
이 책은 처음 저희 에이콘에서 번역서를 펴내게 되신 고현영님과 윤평호님이 번역을 하셨습니다. "열심히, 꼼꼼히, 훌륭하게" 번역을 마무리해주신 두분께 감사 말씀 드립니다. 특히, 주위 소개 없이 직접 에이콘출판사의 문을 두드리고 역자 신청을 해주셔서 인연을 맺게 된 후 먼 길 오가며 책 마무리까지 정말 열심히 해주신 고현영님께 정말 감사합니다. 앞으로도 저희 해킹 보안 책의 훌륭한 역자로서 좋은 책 소개해드릴 수 있을 것 같습니다.
마지막으로 저자들이 책 첫 머리에 써놓은 위트 넘치는 서문을 한번 읽어보세요. :)
불, 수레바퀴, 전기.
인간의 이 위대한 발명품들은 오랜 시간을 거쳐 Ajax라는 기념비적인 업적을 탄생시키는 것으로 이어진다.
직립보행을 시작한 그때부터 인간은 웹에서 페이지를 부분적으로 갱신할 수 있는 날을 꿈꿔왔다. 아니 그날을 갈망했다.
어느 날 아침 제시 제임스 가렛은 샤워를 하던 중에 절대자 하나님으로부터 Ajax 복음을 계시받았다.
그러나 아즈텍의 코르테스나 스타워즈 에피소드 전편에서처럼 인류의 희망으로 등장했던 궁극의 기술이 결국 파멸의 앞잡이로 전락하고 말았다.
Ajax의 보안상 취약점이 그 음흉한 고개를 들고, 거리는 혼돈으로 가득 찼다. 찬란했던 문명은 모래처럼 무너져 내리고 있었다.
이때 빌리와 브라이언, 이름 없는 두 용사가 Ajax의 거대한 공포에 맞서 분연히 들고 일어났다.
연약하고 무고한 사람들을 지키기 위해.
어둠의 세력을 무찌르기 위해.
우주 모든 생명의 종말을 막기 위해.
49.99달러 혹은 3만원을 흔쾌히 내고 이 책을 구입해주신 여러분께 진심으로 감사드린다.
이 책은 지금 YES24, 교보문고, 강컴, 알라딘, 인터파크에서 예약 판매를 하고 있습니다. 웹 보안의 취약점을 우려해오셨던 분들께 길잡이가 될 수 있기를 바랍니다.
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.