Top

[웹 개발자가 꼭 알아야 할]
Ajax 보안

  • 원서명Ajax Security (ISBN 9780321491930)
  • 지은이빌리 호프만, 브라이언 설리번
  • 옮긴이고현영, 윤평호
  • ISBN : 9788960770645
  • 30,000원
  • 2008년 11월 10일 펴냄 (절판)
  • 페이퍼백 | 496쪽 | 188*250mm
  • 시리즈 : 해킹과 보안

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

안전하고 견고한 Ajax 웹 애플리케이션을 제작해야 하는 웹 개발자라면 누구나 꼭 알아야 할 Ajax 관련 보안 취약점을 알기 쉽게 설명한 실용 가이드. Ajax 애플리케이션의 잠재적 보안 문제를 제시하고 해결하며, 좀 더 견고하고 안전한 코드를 작성하기 위한 지침을 알려준다. 또 프로토타입, DWR, ASP.NET AJAX 등 잘 알려진 Ajax 프레임워크에서 지원하는 보안 프레임워크와 개발자가 추가로 개발해야 하는 사항도 다룬다.


[ 소개 ]

수많은 웹사이트가 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 전문가에서 문제를 점검하는 테스터에 이르기까지 모든 보안 전문가는 물론, 웹 개발자들도 꼭 읽어야 할 필독서다.

저자/역자 소개

[ 저자 서문 ]

Ajax는 사람들이 웹 애플리케이션을 구성하고 배포하는 방식을 완전히 바꿨다. 웹 브라우저가 웹 서버 위에 구축된 강력한 애플리케이션을 사용하기 위해 단순한 벙어리 같은 터미널로서 동작하던 시대는 지나갔다. 오늘날에는 데스크탑 프로그램처럼 반응하는 Ajax 애플리케이션이 클라이언트와 서버의 기능을 모두 이용해 구현될 수 있다. 구글과 야후 같은 회사뿐만 아니라 오픈소스 커뮤니티의 개발자가 클라이언트 측 저장소, 오프라인 웹 애플리케이션, 풍부한 Web API 등 새로운 기능을 선보이며 Ajax의 지평을 넓히는 것을 날마다 보고 있다.

웹 프로그래머와 보안 연구자로서 우리는 쿨한 새로운 애플리케이션과 기술을 가능한 한 많이 배우려고 경주해왔다. 그러나 Ajax가 제공하는 모든 가능성에 흥분하면서도 한편으로는 찜찜한 기분을 떨쳐버릴 수가 없었다. 그 누구도 이 새로운 애플리케이션 구조의 보안상의 반향에 대해 이야기하는 사람이 없었기 때문이다. SQL 인젝션 또는 크로스 사이트 스크립팅과 같은 위험한 보안 취약요소에 좀이 먹힌 예제 코드, 별로 좋지 않은 조언을 해주는 전문가와 그들이 제시하는 자료는 그럴 듯하지만 문제점을 쉽게 찾을 수 있다.

좀 더 언급하자면 잘 알려진 웹 취약점을 무시하거나 부록으로 언급을 미루는 경우가 많다. 그뿐 아니라 너무 낮은 하위 레벨의 웹 서비스를 제공하거나 애플리케이션 흐름제어 조작, 안전하지 않은 방법으로 매시업 프로그램 개발, 우회 가능한 인증 메카니즘을 사용하는 등 더 큰 보안상의 문제가 있음을 알게 됐다. Ajax는 데스크탑과 웹 애플리케이션으로부터 사용성의 장점을 상속받은 동시에 두 세계의 보안 취약점을 모두 물려받았다. 대부분의 개발자에게 보안은 여전히 사후의 문제인 것 같다.

이제, 사고방식이 바뀌어야 한다.

이 책은 최신의 강력한 Ajax 기능을 자신의 애플리케이션에 적용해봄과 동시에 개인적, 금전적 목적을 위해 프로그램의 약점을 찾는 사악한 해커의 먹잇감이 되지 않도록 안전하게 개발하고 싶은 Ajax 개발자를 위한 책이다. 본문에서는 Ajax 애플리케이션의 잠재적 보안 문제를 제시할 뿐만 아니라 그 문제를 해결하고 좀 더 견고하며 안전한 코드를 작성하기 위한 지침을 주고자 한다. 또 프로토타입(Prototype), DWR, 마이크로소프트 ASP.NET AJAX 같은 잘 알려진 Ajax 프레임워크에서 지원하는 보안 프레임워크와 개발자가 추가로 개발해야 하는 사항도 다룰 것이다.

또한 품질 보증 엔지니어와 시장 점유율 테스터에게도 도움이 될 것이다. 우리는 Ajax 애플리케이션에서 자주 보이는 약점과 보안상 결함에 대한 정보를 제공하려고 노력해왔다. 이 책은 Ajax 애플리케이션 감사를 위해 테스트를 진행하면서 부딪칠 문제들, 즉 웹 애플리케이션의 저장 위치를 찾는다든지 결함을 탐지하는 방법에 대해서 기술한다. 이런 도전적인 과제를 완수하는 데 도움을 줄 수 있는 도구를 검토할 것이다. 마지막으로 자바스크립트 하이재킹, 영속적인 저장공간 훔치기, 매시업 공격과 같은 공격 기술도 살펴본다. 그리고 단 두 번의 웹 요청만으로 전체 백엔드 데이터베이스를 뽑아낼 수 있는 단순한 Ajax 기반의 SQL 인젝션 기법처럼 익숙한 공격에 대해 새로운 시각도 제시할 것이다.

이 책은 Ajax나 웹 프로그래밍에 대해 알려주는 책은 아니다. 기술적인 내용은 이미 어느 정도 알고 있으리라 가정한다. 여기서는 보안에 취약한 Ajax 애플리케이션을 설계하고 제작하는 것에 대한 문제점과 실수에 초점을 맞추고 어떻게 하면 안전한 Ajax 애플리케이션을 개발할 수 있는지 조언한다. 이 책은 특정 프로그래밍 언어를 한정하거나 서버 측 애플리케이션을 특정 언어로 작성하도록 유도하지 않을 것이다. 우리는 HTTP, HTML, CSS, 자바스크립트 등 모든 Ajax 애플리케이션이 공통으로 사용하는 컴포넌트를 기준으로 이야기를 진행할 것이다. 웹 서버 코드의 보안에 관해 조언을 할 경우에는 어느 언어로든 작성 가능한 정규 표현식 또는 문자열 연산 함수 같은 기법을 사용할 것이다.

이 책은 개발자와 테스트 모두에게 도움이 되는 자료를 많이 제공할 것이다. 마이스페이스(MySpace)의 새미(Samy)와 야후(Yahoo)의 야매너(Yamanner) 웜과 같은 사례를 가지고 실제 Ajax 애플리케이션과 그것들이 어떻게 해킹을 당했는지 살펴볼 것이다. 온라인 여행 예약 사이트 같은 샘플 애플리케이션과 예제를 가지고 어떻게 Ajax 애플리케이션을 안전하게 할 수 있는지 테스터와 개발자에게 지침을 제공할 것이다.

이 책은 처음부터 끝까지 통독하는 편이 좋지만 각 장은 독립적이다. 특정 Ajax 프레임워크의 보안 이슈 분석(15장 참조) 같은 특정 주제를 먼저 보고 싶다면 순서에 관계없이 바로 넘어가도 괜찮다.

Ajax는 웹 애플리케이션을 제작하기 위한 흥미롭고 새로운 철학을 제시했다. 이 책은 보안의 관점에서 Ajax가 어리석거나 타당치 않은 기술이므로 버리자는 얘기를 하는 것이 절대로 아니다. 우리는 강력하고 풍부한 기능을 바탕으로 최대한 유용하면서도 악의적인 공격으로부터 견고한 Ajax 애플리케이션을 제작하는 방법을 제시할 것이다.

즐거운 시간이 되길 바라며,
빌리와 브라이언으로부터



[ 저자 소개 ]

빌리 호프만
HP 보안 연구소의 수석 보안 연구원으로, 웹 애플리케이션의 취약점을 자동으로 발견해주는 기술에 일가견이 있다. 블랙 햇, RSA, 툴콘(Toorcon), 쉬무콘(Shmooncon), 인포섹(Infosec)과 AJAXWorld 같은 컨퍼런스의 단골 발표자이며, FBI에서 초청 강연도 했다.

브라이언 설리번
HP 소프트웨어의 애플리케이션 보안 센터 부서의 소프트웨어 개발 매니저로서 일하고 있다. HP에 오기 전, SPI 다이내믹에서 책임연구원으로서 DevInspect를 만들었다. 이 프로그램은 웹 애플리케이션의 보안 취약점을 체계적으로 점검을 하는 데 탁월한 성능을 보이고 있다. 브라이언은 산업 현장의 현안을 AJAXWorld, 블랙 햇, RSA에서 발표하고 있다.


[ 옮긴이의 말 ]

대학에 입학했을 무렵 터미널실에서 인터넷을 처음으로 사용해 봤습니다. 워크스테이션에 붙은 터미널에서 웹 브라우저를 띄워가며 세계의 여러 정보를 접할 수 있다는 사실이 신기했습니다. 너도 나도 인터넷 인터넷 하지만 정작 쓸 줄 아는 사람은 많지 않았고 대학교에서도 환경이 열악했기에 인터넷 환경을 접하기란 그리 쉽지 않았습니다. 하지만 지금의 인터넷 환경을 보면 정말 그런 시절이 있었나 하는 생각이 듭니다. 인터넷 환경이 발전하면서 사회 생활과 문화 전반이 엄청나게 바뀌었습니다. 웹으로 수업 등록도 하고 물건도 사고 TV도 볼 수 있는 시대가 됐습니다.

세월과 함께 사람들의 요구도 증대했습니다. 좀더 화려한, 좀더 풍부한 웹 콘텐츠를 원하는 사람들의 요구에 웹 기술도 발전해 왔습니다. 이 때 등장한 것이 바로 Ajax입니다. Ajax는 비동기성과 부분 업데이트로 인해 더 빠르고 동적인 콘텐츠를 제공하는 기술로 부각됐습니다. 검색어 자동완성이나 구글맵에 쓰인 기능을 보며 사람들은 감탄을 금치 못했습니다. 너도 나도 Ajax에 관심을 갖게 됐고 많은 책들이 쏟아져 나왔습니다. 그러나 새로운 기술에 열광하다 보면 자칫 기술이 갖는 문제점을 간과하기 쉽습니다. 'Ajax는 최신 기술인데 무슨 문제가 있겠어요?' 이런 생각에 일침을 가하는 것이 바로 『Ajax 보안』입니다. Ajax는 최신 기술이긴 하지만 기존 웹 애플리케이션과 웹 서비스가 지닌 보안 문제를 그대로 가지고 있습니다. 저자는 실제 발생했던 사례와 일상 생활의 비유를 들어가며 Ajax에서 발생하는 보안 문제를 설명합니다.

이 책의 전반부는 기존의 웹 애플리케이션과 웹 서비스가 갖고 있는 보안 취약성을 설명합니다. 그리고 Ajax에서도 여전히 해당 문제가 나타나고 있음을 보이고 있습니다. 후반부에는 Ajax를 쓰면서 발생하는 문제와 해법을 제시하고 있습니다.

Ajax를 사용하는 개발자나 보안에 관심이 있으신 분은 이 책을 통해 보안과 관련된 폭넓은 지식을 얻고 문제가 발생하는 상황의 이해와 해결책을 찾을 수 있으리라 생각합니다. 이 책이 여러분의 애플리케이션을 좀더 안전하고 견고하게 만드는 데 도움이 되면 좋겠습니다.


[ 옮긴이 소개 ]

고현영
PKI(Public Key Infrastructure) 시스템 구축, 개발, 유지보수를 했다. NMS(Network Management System) 개발에도 참여했다. 광운대학교 전자통신공학과와 동대학원을 졸업했으며, 주요 관심분야는 보안과 네트워크 프로그래밍이다.

윤평호
보안제품의 초기 기획과 설계를 시작으로 제품 상용화 및 유지보수를 포함한 소프트웨어 개발의 전체 프로세스를 진행했다. 현재 드림시큐리티에서 PKI 시스템 개발과 컨설팅을 하고 있다. 보안과 표준 기술에 관심이 많고 늘 새로운 것에 도전하기를 좋아하는 개발자로, 광운대 수학과를 졸업했다.

목차

목차
  • 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
  • 2장 보이지 않는 도둑
    • 이브.... 55
    • HighTechVacations.net 해킹.... 56
      • 쿠폰 시스템 해킹.... 57
      • 클라이언트단 데이터 바인딩 공격.... 62
      • Ajax API 공격.... 67
    • 보이지 않는 도둑.... 72
  • 3장 웹 공격
    • 공격의 종류.... 75
      • 리소스 열거.... 76
      • 파라미터 조작.... 80
    • 그 밖의 공격 방법.... 104
      • 크로스 사이트 요청 변조.... 105
      • 피싱.... 106
      • 서비스 거부 공격.... 107
    • 리소스 열거와 파라미터 조작으로부터 보호하라.... 107
      • 보안 소켓 계층.... 108
    • 결론.... 108
  • 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
  • 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
  • 7장 Ajax 애플리케이션 하이재킹
    • Ajax 프레임워크의 하이재킹.... 204
      • 실수로 인한 함수 덮어쓰기.... 204
      • 함수 덮어쓰기의 예.... 206
    • 주문형 Ajax의 하이재킹.... 212
    • JSON API의 하이재킹.... 217
      • 객체 리터럴의 하이재킹.... 222
      • JSON 하이재킹이 가능한 이유.... 223
      • JSON 하이재킹을 막자.... 224
    • 결론.... 227
  • 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
  • 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
  • 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
  • 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
  • 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
  • 부록 A 새미 웜 소스코드.... 467

관련 블로그 글

웹 개발자라면 반드시 읽어야 할 첫 "Ajax 보안" 책

사용자 삽입 이미지

웹 개발자가 꼭 알아야할 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, 교보문고, 강컴, 알라딘, 인터파크에서 예약 판매를 하고 있습니다. 웹 보안의 취약점을 우려해오셨던 분들께 길잡이가 될 수 있기를 바랍니다.

CC

크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안