Top

웹 개발자를 위한 웹 보안 [실제 해킹 공격에서 적용할 수 있는 웹 보안 가이드]

  • 원서명Web Security for Developers: Real Threats, Practical Defense (ISBN 9781593279943)
  • 지은이말콤 맥도널드(Malcolm McDonald)
  • 옮긴이장지나
  • ISBN : 9791161756608
  • 25,000원
  • 2022년 07월 22일 펴냄
  • 페이퍼백 | 252쪽 | 188*235mm
  • 시리즈 : 해킹과 보안

책 소개

요약

웹 개발자가 알아야 할 공격과 방어를 다룬다!
매년 크게 바뀌지 않는 웹 취약점으로부터 웹사이트를 방어하기 위한 실질적인 방안을 이해하기 쉽게 설명한다. 웹 개발자라면 꼭 알아야 하는 필수 지식이며 예시와 함께 해킹에 대한 조치 방안을 알기 쉽게 표현했다.
인터넷, 브라우저가 어떻게 동작하는지부터 인젝션 공격, 파일 업로드 공격, DoS 공격의 전반적인 내용을 알아본다. 또한 특정 프로그래밍 언어에 국한되지 않아 웹 보안의 원리를 총체적으로 배우기 좋은 가이드가 될 것이다.

이 책에서 다루는 내용

◆ SQL 인젝션 공격, 악의적인 자바스크립트와 CSRF로부터의 보호 방법
◆ 인증 및 형상 액세스 제어 방법을 활용한 계정 보호
◆ 암호 추측, 세션 도용 또는 권한 상승에 의존하는 공격 방지
◆ 암호화 구현
◆ 레거시 코드의 취약점 관리
◆ 취약점을 노출하는 정보 누출 방지
◆ 과대 광고 및 서비스 거부 등 고급 공격 완화

이 책의 대상 독자

이제 막 일을 시작하는 웹 개발자라면 이 책이 인터넷 보안에 대한 이상적인 안내서가 될 것이다. 컴퓨터 과학 관련 자격증을 취득했거나 부트캠프를 갓 수료한 사람, 독학한 사람 모두 이 책을 읽어볼 것을 권한다. 모든 필수 지식이 명확한 예시와 함께 직설적으로 설명한다. 위협에 대해 미리 준비한다면 앞으로 다가올 많은 문제를 해결할 수 있다.
경험이 많은 프로그래머에게도 유용하다. 보안 지식이 있다면 일을 할 때 도움이 되므로 이 책을 통해 부족한 부분을 보충할 수 있다. 많은 프로그래머가 경력 전반에 걸쳐 다양한 언어를 사용하기 때문에 개별 라이브러리에 지나치게 집중하는 것보다 웹 보안의 원리를 익히는 것이 좋다.

이 책의 구성

1장 '웹사이트를 해킹하자’에서는 웹사이트를 해킹하는 것이 얼마나 쉬운지 알 수 있다.
2장 ‘인터넷이 어떻게 작동하는지’에서는 TCP, IP 주소, 도메인 이름, HTTP를 검토하고 네트워크에서 데이터를 안전하게 전달할 수 있는 방법을 확인한다.
3장 ‘브라우저의 작동 방식’에서는 브라우저가 웹 페이지를 렌더링하는 방법과 브라우저 보안 모델에서 자바스크립트 코드가 실행되는 방법을 배운다.
4장 ‘웹 서버의 작동 방식’에서는 정적 콘텐츠를 제공하는 방법과 템플릿과 같은 동적 콘텐츠를 사용해 데이터베이스 및 기타 시스템의 데이터 통합 방법을 설명한다.
5장 ‘프로그래머의 작동 방식’에서는 웹사이트 코드를 작성하는 과정과 버그 및 보안 취약점의 위험을 줄이는 개발 습관을 설명한다.
6장 ‘인젝션 공격’에서는 해커가 코드를 주입하고 서버에서 실행하는 것을 살펴보며 웹사이트 취약점을 조사한다.
7장 ‘크로스 사이트 스크립팅 공격.’에서는 악의적인 자바스크립트 코드를 브라우저 환경에 반입하는 데 사용되는 공격과 공격으로부터 보호하는 방법을 검토한다.
8장 ‘사이트 간 요청 위조 공격’에서는 해커들이 사용하는 위조 공격 방법을 소개한다.
9장 ‘인증 손상’에서는 타협 암호의 무작위 대입공격부터 사용자 목록에 이르기까지 로그인 화면을 회피하기 위한 방법을 소개한다.
10장 ‘세션 하이재킹’에서는 사용자들이 로그인한 후 계정을 어떻게 탈취할 수 있는지 알려준다.
11장 ‘권한’에서는 악의적인 행위자가 권한 상승을 이용해 사이트의 금지된 영역에 액세스하는 것을 방지할 수 있는 방법을 알아본다.
12장 ‘정보 누출’에서는 정보가 유출돼 드러난 웹사이트의 취약점을 없애는 방법을 알려준다.
13장 ‘암호화’에서는 암호화를 적절하게 사용하는 방법을 보여주고 인터넷상에서 암호화가 중요한 이유를 설명한다.
14장 ‘제3자 코드’에서는 다른 사람의 코드에서 취약점을 관리하는 방법을 배운다.
15장 ‘XML 공격’에서는 XML 공격에 취약한 웹 서버를 보호하는 방법을 알려준다.
16장. ‘부속품이 되지 마라’에서는 보안 허점을 해결해 해킹의 부속품이 되지 않는 방법을 알려준다.
17장 ‘서비스 거부 공격’에서는 서비스 거부 공격의 일환으로 얼마나 많은 양의 네트워크 트래픽이 웹사이트를 오프라인으로 전환시킬 수 있는지 보여준다.
18장 ‘요약’에서는 지금까지 배운 보안의 핵심 요소들을 복습한다.

저자/역자 소개

지은이의 말

웹은 야생의 장소다. 인터넷은 전문가들이 의도적으로 설계한 것이고 모두가 다 그럴듯하게 동작한다는 인상을 받기 쉽다. 사실 인터넷의 진화는 빠르고 무모했으며 오늘날 네트워크에서 하는 일은 기존의 발명가들이 상상했던 것을 뛰어넘는다.
결과적으로 웹사이트를 보호하는 것은 어려운 제안처럼 보일 수 있다. 웹사이트는 해커의 활동적이고 동기 부여된 커뮤니티를 포함해 수백만 명의 사용자가 즉시 이용할 수 있는 독특한 유형의 소프트웨어다. 대기업들은 일상적인 보안 장애를 겪고 있으며 매주 새로운 데이터 침해 사례가 발표되고 있다. 웹 개발자는 이런 상황에서 어떻게 스스로를 보호해야 할까?
웹 보안의 가장 큰 장점은 웹 취약점의 수가 실제로는 한 권의 책에 들어갈 정도로 적은 편이라는 것이다. 그리고 취약점은 크게 바뀌지 않는다. 이 책은 여러분이 알아야 할 모든 주요 위협을 가르쳐주며 웹사이트를 방어하기 위해 취해야 할 실질적인 조치를 이해하기 쉽게 만든다.
가장 일반적인 보안 취약점을 배우고, 어떻게 차단해야 하는지 안다면 99%의 공격에서 시스템을 보호할 수 있다. 기술적인 해커들은 시스템을 손상시킬 수 있는 방법을 항상 갖고 있다. 하지만 여러분이 이란 원자로나 미국의 정치 캠페인을 벌이지 않는 한 이런 생각으로 밤잠을 설칠 필요는 없다.

지은이 소개

말콤 맥도널드(Malcolm McDonald)

인터넷에서 웹 개발을 위한 가장 인기 있는 보안 훈련 자원 중 하나인 hacksplaining.com을 만들었다. 금융 회사와 스타트업을 위한 코드를 작성했고, 팀을 이끌었던 경험을 바탕으로 보안 취약점을 보호하는 방법을 간단하고 이해하기 쉬운 튜토리얼로 제작했다.

옮긴이 소개

장지나

대학교에서 정보보안학과를 전공했으며 현재 정보보안 컨설턴트로 활동 중이다.

목차

목차
  • 1장 웹사이트를 해킹하다
    • 소프트웨어 익스플로잇 및 다크웹
    • 웹사이트 해킹하는 방법

  • 2장 인터넷 작동 방식
    • 인터넷 프로토콜 스위트
      • 인터넷 프로토콜 주소
      • 도메인 네임 시스템
    • 애플리케이션 계층 프로토콜
      • 하이퍼텍스트 전송 프로토콜
    • 상태 저장 연결
    • 암호화
    • 요약

  • 3장 브라우저 작동 방식
    • 웹 페이지 렌더링
      • 렌더링 파이프라인: 개요
      • Document Object 모델
      • 스타일링 정보
    • 자바스크립트
    • 렌더링 전/후: 브라우저에서 수행하는 다른 모든 작업
    • 요약

  • 4장 웹 서버 작동 방식
    • 정적 자원 및 동적 자원
    • 정적 자원
      • URL 결정
      • 콘텐츠 전송 네트워크
      • 콘텐츠 관리 시스템
    • 동적 자원
      • 템플릿
      • 데이터베이스
      • 분산 캐시
      • 웹 프로그래밍 언어
    • 요약

  • 5장 프로그래머가 어떻게 작동하는지
    • 1단계: 설계 및 분석
    • 2단계: 코드 작성
      • 분산 버전 제어 vs 중앙집중식 버전 제어
      • 분기 코드 및 병합 코드
    • 3단계: 배포 전 테스트
      • 커버리지 및 지속적인 통합
      • 테스트 환경
    • 4단계: 릴리스 프로세스
      • 릴리스 중 표준화된 배포 옵션
      • 빌드 프로세스
      • 데이터베이스 마이그레이션 스크립트
    • 5단계: 릴리스 후 테스트 및 관찰
      • 침투 테스트
      • 모니터링, 로깅, 오류 보고
    • 종속성 관리
    • 요약

  • 6장 인젝션 공격
    • SQL 인젝션 공격
      • SQL이 무엇인가?
      • SQL 인젝션 공격의 구조
      • 완화 1: 매개 변수화된 구문 사용
      • 완화 2: 개체 관계 매핑 사용
      • 추가 완화: 심층 방어 사용
    • 명령 인젝션 공격
      • 명령 인젝션 공격 구조
      • 완화: 탈출 제어 문자
    • 원격 코드 실행
      • 원격 코드 실행 공격의 분석
      • 완화: 역직렬화 중 코드 실행 비활성화
    • 파일 업로드 취약점
      • 파일 업로드 공격 분석
      • 완화
    • 요약

  • 7장 크로스 사이트 스크립팅 공격
    • 저장 크로스 사이트 스크립팅 공격
      • 완화 1: 탈출 HTML 문자
      • 완화 2: 콘텐츠 보안 정책 구현
    • 반사 크로스 사이트 스크립팅 공격
      • 완화: HTTP 요청에서 동적 내용 탈출
    • DOM 기반 크로스 사이트 스크립팅 공격
      • 완화: URI 조각에서 동적 내용 탈출
    • 요약

  • 8장 사이트 간 요청 위조 공격
    • 사이트 간 요청 위조 공격 분석
    • 완화1: REST 원칙을 따른다
      • 완화 2: 안티 CSRF 공격 쿠키 구현
      • 완화 3: SameSite 쿠키 속성 사용
    • 보너스 완화 방법: 중요한 작업에 대한 재인증 필요
    • 요약

  • 9장 인증 손상
    • 인증 구현
      • HTTP 네이티브 인증
      • 네이티브하지 않은 인증
      • 무작위 대입 공격
    • 완화 1: 타사 인증 사용
    • 완화 2: Single Sign-On과 통합
    • 완화 3: 자체 인증 시스템 보호
      • 사용자 이름, 이메일 주소 또는 둘 다 필요하다
      • 복잡한 비밀번호 필요
      • 안전하게 암호 저장
      • 멀티팩터 인증 필요
      • 로그아웃 기능 구현 및 보안
      • 사용자 열거 금지
    • 요약

  • 10장 세션 하이재킹
    • 세션 작동 방식
      • 서버 측 세션
      • 클라이언트 측 세션
    • 공격자가 세션을 가로채는 방법
      • 쿠키 도난
      • 세션 고정
      • 취약한 세션 ID 활용
    • 요약

  • 11장 권한
    • 권한 상승
    • 접근 제어
      • 인증 모델 설계
      • 액세스 제어 구현
      • 액세스 제어 테스트
      • 감사 추적 추가
      • 일반적인 관리 감독 방지
    • 디렉터리 접근 공격
      • 파일 경로 및 상대 파일 경로
      • 디렉터리 접근 공격 분석
      • 완화 1: 웹 서버 신뢰
      • 완화 2: 호스팅 서비스 사용
      • 완화 3: 간접 파일 참조 사용
      • 완화 4: 파일 참조 삭제
    • 요약

  • 12장 정보 누출
    • 완화 1: 숨길 수 없는 서버 헤더 사용 안 함
    • 완화 2: 깔끔한 URL 사용
    • 완화 3 : 일반 쿠키 매개 변수 사용
    • 완화 4: 클라이언트 측 오류 보고 사용 안 함
    • 완화 5: 자바스크립트 파일 최소화 또는 난독화
    • 완화 6: 클라이언트 측 파일 삭제
    • 보안 권고 사항의 최상위에 있어야 한다
    • 요약

  • 13장 암호화
    • 인터넷 프로토콜의 암호화
      • 암호화 알고리듬, 해싱, 메시지 인증 코드
      • TLS 핸드셰이크
    • HTTPS 사용
      • 디지털 인증서
      • 디지털 인증서 획득
      • 디지털 인증서 설치
    • HTTP(및 HTTPS) 공격
      • 무선 라우터
      • Wi-Fi 핫스팟
      • 인터넷 서비스 공급자
      • 정부 기관
    • 요약

  • 14장 제3자 코드
    • 종속성 보호
      • 실행 중인 코드 파악
      • 새로운 버전을 신속하게 구현할 수 있다
      • 보안 문제의 경계 유지
      • 업그레이드 시기 파악
    • 구성 보안
      • 기본 자격 증명 사용 안 함
      • 디렉터리 리스팅 비활성화
      • 구성 정보 보호
      • 테스트 환경 강화
      • 보안 관리 프런트엔드
    • 사용하는 서비스 보안
      • API 키 보호
      • 웹훅 보호
      • 타사에서 제공하는 보안 콘텐츠
    • 공격 벡터로서의 서비스
      • 과대 광고를 경계하라
      • 악성 코드 전송 방지
      • 평판이 좋은 광고 플랫폼 사용
      • SafeFrame을 사용하라
      • 광고 기본 설정 맞춤
      • 의심스러운 광고 검토 및 보고
    • 요약

  • 15장 XML 공격
    • XML의 사용
    • XML 유효성 검사
      • 문서 유형 정의
    • XML bomb 공격
    • XML 외부 엔티티 공격
      • 해커가 외부 엔티티를 이용하는 방법
    • XML 구문 파서 보안 방법
      • 파이썬
      • 루비
      • Node.js
      • 자바
      • .NET
    • 기타 고려 사항
    • 요약

  • 16장 부속품이 되지 마라
    • 이메일 사기
      • 발신인 정책 프레임워크 구현
      • 도메인 키 식별 메일 구현
      • 이메일 보호: 실제 단계
    • 이메일에서 악의적인 링크 숨기기
      • 리다이렉션 열기
      • 열린 리다이렉션 방지
      • 기타 고려 사항
    • 클릭잭킹
      • 클릭잭킹 방지
    • 서버 측 요청 위조
      • 서버 측 위조 방지
    • 봇넷
      • 악성 프로그램 감염에게서 보호
    • 요약

  • 17장 서비스 거부 공격
    • 서비스 거부 공격 유형
      • 인터넷 제어 메시지 프로토콜 공격
      • 전송 제어 프로토콜 공격
      • 애플리케이션 계층 공격
      • 반사 및 증폭된 공격
      • 분산 서비스 거부 공격
      • 의도하지 않은 서비스 거부 공격
    • 서비스 거부 공격 완화
      • 방화벽 및 침입 방지 시스템
      • 분산 서비스 거부 보호 서비스
      • 규모별 건물
    • 요약

  • 18장 마치며

도서 오류 신고

도서 오류 신고

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

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

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