logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

프런트엔드 개발을 위한 보안 입문

프런트엔드 개발을 위한 보안 입문

(기초 보안 지식부터 XSS, CSRF 등 프런트엔드를 노리는 사이버 공격까지)

히라노 마사시 (지은이), 이춘혁 (옮긴이)
  |  
제이펍
2024-01-02
  |  
26,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 23,400원 -10% 0원 1,300원 22,100원 >
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 18,200원 -10% 910원 15,470원 >

책 이미지

프런트엔드 개발을 위한 보안 입문

책 정보

· 제목 : 프런트엔드 개발을 위한 보안 입문 (기초 보안 지식부터 XSS, CSRF 등 프런트엔드를 노리는 사이버 공격까지)
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9791192987552
· 쪽수 : 280쪽

책 소개

프런트엔드를 제대로 구현한다면 이러한 XSS 공격뿐만 아니라 여러 사이버 공격을 막을 수 있다. 이 책을 통해 취약성을 조사하고, 근본 원인을 이해하고, 자신의 애플리케이션을 사이버 공격으로부터 보호해보자.

목차

옮긴이 머리말 ix
베타리더 후기 xi
머리말 xiii
감사의 말 xvi

1.1. CHAPTER 1 웹 보안의 개요 1
1.1 보안 대책이 필요한 이유 1
__1.1.1 취약성은 왜 발생할까? 1
__1.1.2 비기능 요건의 중요성 2
1.2 웹 취약성의 종류와 동향 3
__1.2.1 보안 지침에서 확인하는 취약성의 종류와 동향 4
__1.2.2 보안 관련 정보 수집 6
COLUMN 기업이 취약성에 대처하는 방법 6
마무리 7

1.2. CHAPTER 2 실습 준비 9
2.1 준비 전 9
__2.1.1 실습 추천 환경 9
__2.1.2 실습에서 사용하는 소프트웨어 9
2.2 Node.js 설정하기 11
__2.2.1 Node.js 설치하기 11
__2.2.2 Node.js 설치 확인하기 12
__2.2.3 npm 설치 확인하기 12
2.3 Node.js + Express를 사용한 HTTP 서버 구축하기 13
__2.3.1 실습 준비와 Express 설치하기 13
__2.3.2 Node.js + Express로 HTTP 서버 구축하기 14
__2.3.3 정적 파일 전달하기 17
__2.3.4 호스트명을 임의로 설정해 로컬 HTTP 서버에 접속하기 18
COLUMN CommonJS와 ECMAScript Modules 19
마무리 19

1.3. CHAPTER 3 HTTP 21
3.1 HTTP 기초 21
__3.1.1 URL 22
__3.1.2 DNS 23
__3.1.3 TCP/IP 24
__3.1.4 HTTP 메시지 26
__3.1.5 HTTP 메서드 28
__3.1.6 상태 코드 29
__3.1.7 HTTP 헤더 30
__3.1.8 쿠키를 사용한 상태 관리 32
3.2 HTTP 실습하기 33
__3.2.1 GET과 POST로 데이터 전송하기 33
__3.2.2 상태 코드 확인 및 변경하기 38
__3.2.3 임의로 HTTP 헤더 추가하기 42
3.3 안전한 통신을 위한 HTTPS 45
__3.3.1 HTTP의 약점 45
__3.3.2 HTTP 약점을 해결하는 TLS 47
__3.3.3 HTTPS 도입 권장 49
__3.3.4 안전한 콘텍스트만 이용 가능한 API 50
__3.3.5 Mixed Content의 위험성 51
__3.3.6 HSTS를 사용해 HTTPS 통신 강제하기 53
마무리 56

1.4. CHAPTER 4 Origin에 의한 애플리케이션 간 접근 제한 57
4.1 애플리케이션 간 접근 제한의 필요성 57
4.2 동일 출처 정책에 의한 보호 59
__4.2.1 출처 60
__4.2.2 동일 출처 정책 60
__4.2.3 동일 출처에 의해 접근 제한되지 않는 사례 65
4.3 동일 출처 정책에 따른 제한 실습 66
__4.3.1 교차 출처에 요청 전송 제한 확인하기 66
__4.3.2 iframe 내부 교차 출처 페이지에 접근 제한 확인하기 67
4.4 CORS 71
__4.4.1 CORS 방식 72
__4.4.2 단순 요청 73
__4.4.3 Preflight Request 74
__4.4.4 쿠키를 포함하는 요청 전송 80
__4.4.5 CORS 요청 모드 81
__4.4.6 crossorigin 속성을 사용하는 CORS 요청 82
4.5 CORS 실습 84
__4.5.1 교차 출처의 요청을 허가하는 방법 84
__4.5.2 접근 허가 출처를 제한하는 방법 87
4.6 postMessage를 사용해 iframe으로 데이터 전송하기 89
4.7 프로세스 분리에 따른 사이드 채널 공격 대책 91
__4.7.1 사이드 채널 공격을 방어하는 Site Isolation 91
__4.7.2 출처마다 프로세스를 분리하는 구조 93
__4.7.3 Cross-Origin Isolation이 유효한 페이지에서 SharedArrayBuffer 사용하기 95
마무리 96

1.5. CHAPTER 5 XSS 97
5.1 능동적 공격과 수동적 공격 97
__5.1.1 능동적 공격 97
__5.1.2 수동적 공격 98
5.2 XSS 99
__5.2.1 XSS 구조 100
__5.2.2 XSS 위협 101
__5.2.3 세 가지 XSS 102
__5.2.4 DOM 기반 XSS 104
__5.2.5 XSS 대책 109
5.3 XSS 방지 실습 121
__5.3.1 적절한 DOM API를 사용하는 방법 121
__5.3.2 URL 스키마를 http/https로 한정하기 125
__5.3.3 XSS 문제를 줄이는 DOMPurify 라이브러리 사용하기 127
5.4 Content Security Policy를 사용한 XSS 대처하기 129
__5.4.1 CSP 개요 129
__5.4.2 Strict CSP 134
__5.4.3 문자열을 안전한 타입으로 사용하는 Trusted Types 138
__5.4.4 Report-Only 모드를 사용한 policy 테스트 143
5.5 CSP 설정 실습하기 146
__5.5.1 nonce-source를 사용한 CSP 설정하기 146
__5.5.2 strict-dynamic을 사용해 동적으로 <script> 요소 생성하기 150
__5.5.3 Trusted Types 설정 방법 153
마무리 155

1.6. CHAPTER 6 기타 수동적인 공격: CSRF, 클릭재킹, 오픈 리다이렉트 157
6.1 CSRF 157
__6.1.1 CSRF의 구조 157
__6.1.2 토큰을 사용하는 CSRF 대책 159
__6.1.3 Double Submit 쿠키를 사용하는 CSRF 대책 161
__6.1.4 SameSite 쿠키를 사용하는 CSRF 대책 163
__6.1.5 Origin 헤더를 사용하는 CSRF 대책 164
__6.1.6 CORS를 사용하는 CSRF 대책 165
6.2 CSRF 대책 실습 166
__6.2.1 간단한 확인용 로그인 화면 생성 166
__6.2.2 폼 전송 화면 생성하기 170
__6.2.3 피싱 사이트에서 CSRF 공격하기 173
__6.2.4 Double Submit 쿠키를 사용하는 CSRF 대책 174
6.3 클릭재킹 178
__6.3.1 클릭재킹의 구조 178
__6.3.2 클릭재킹 대책 181
6.4 클릭재킹 대책 실습 182
__6.4.1 클릭재킹 공격 재현하기 183
__6.4.2 X-Frame-Options에 의한 클릭재킹 대책 186
6.5 오픈 리다이렉트 187
__6.5.1 오픈 리다이렉트의 구조 187
__6.5.2 URL 검사를 통한 오픈 리다이렉트 대책 189
6.6 오픈 리다이렉트 대책 실습 190
__6.6.1 오픈 리다이렉트 공격 재현하기 190
__6.6.2 URL 검사에 의한 대책 191
마무리 192

1.7. CHAPTER 7 인증 ∙ 인가 193
7.1 인증과 인가의 차이 193
__7.1.1 인증 193
__7.1.2 인증의 3요소 193
__7.1.3 인가 194
7.2 인증 기능의 보안 리스크 195
__7.2.1 인증 방식의 종류 195
__7.2.2 비밀번호 인증에 대한 공격 196
__7.2.3 비밀번호 인증 공격에 대한 대책 197
7.3 계정 생성 폼 구현 실습 198
__7.3.1 계정 생성 페이지 준비 198
__7.3.2 입력 내용에 따른 type 속성 변경 201
__7.3.3 입력 내용 유효성 검사 204
COLUMN 비밀번호 패턴 조합의 경우의 수 210
__7.3.4 비밀번호 입력 보조하기 211
7.4 로그인 정보 유출에 주의하기 217
마무리 219

1.8. CHAPTER 8 라이브러리를 노린 보안 리스크 221
8.1 라이브러리의 사용 221
__8.1.1 오픈소스 소프트웨어의 사용 221
__8.1.2 프런트엔드 라이브러리 상황 222
8.2 라이브러리에 숨어 있는 보안 리스크 223
__8.2.1 서드파티 라이브러리를 경유하는 공격 223
__8.2.2 리뷰가 충분하지 않은 코드에 의한 취약성 223
__8.2.3 계정 탈취에 의한 취약성 224
__8.2.4 의존 관계 상속에 의한 취약성 224
__8.2.5 CDN에서 콘텐츠 변조 225
__8.2.6 CDN에서 취약성을 갖는 버전의 라이브러리 가져오기 226
8.3 라이브러리 사용의 보안 대책 226
__8.3.1 취약성을 확인하는 툴과 서비스 사용 226
__8.3.2 유지보수가 꾸준히 이루어지는 라이브러리 사용하기 230
__8.3.3 최신 버전의 라이브러리 사용하기 230
__8.3.4 하위 자원 무결성을 통한 변조 확인하기 231
__8.3.5 CDN에서 불러오는 라이브러리의 버전 지정하기 232
마무리 233

1.9. APPENDIX A 앞에서 다루지 않은 주제 235
A.1 보안 관련 보충학습 235
__A.1.1 책에서 다루지 않은 주제 학습 236
__A.1.2 보안 관련 정보를 얻는 필자의 방법 237
A.2 HTTPS 실습 240
__A.2.1 HTTPS 서버 구현하기 240
__A.2.2 HSTS를 사용해 HTTPS로 통신 강제하기 246

1.10. APPENDIX B 한국어판 부록 251
B.1 보안 체크리스트 251

참고문헌 255
찾아보기 260

저자소개

히라노 마사시 (지은이)    정보 더보기
Node.js Core Collaborator이자 Cybozu 주식회사의 프런트엔드 엔지니어. OSS(오픈소스 소프트웨어) 활동과 JSConf JP 등 다양한 커뮤니티 운영에 참여하고 있다. 웹과 자바스크립트를 좋아하고, 잡지에 글을 기고하거나 강연을 하기도 한다.
펼치기
이춘혁 (옮긴이)    정보 더보기
프로그래밍 언어와 자연어 모두 관심이 많은 개발자다. 고려대학교에서 한문학을 전공하며 자연스레 중국어와 일본어를 익히게 되었다. 중국, 스페인, 일본 등에서 생활하며 다양한 문화와 외국어를 접했고, 공부에 매진해 영어/중국어/일본어/스페인어를 이해하고 구사할 수 있는 수준이 되었다. 일본에서 웹과 ADAS 개발 업무를 담당하였으며, 현재는 한국비건인증원에서 웹 시스템 개발자로 일하고 있다. 신기술과 최적화에 관심이 많으며, ‘젊음을 값진 모험과 바꾸자’라는 마음으로 다양한 경험을 하고, 개발에서는 한 우물을 깊이 그리고 효율적으로 파기 위해 노력 중이다.
펼치기

책속에서



인터넷에 리소스를 공개할 때는 다른 웹 애플리케이션에서 접속을 반드시 제한해야 한다. 동일 출처 정책은 브라우저에 내장된 접근 제한 방식을 말한다. 브라우저는 웹 애플리케이션 사이에 출처라는 경계를 설정해 서로의 접근을 제한한다. 출처와 같은 기능을 통해 개발자는 특별한 대책을 세우지 않아도 다른 웹 애플리케이션에서의 접근을 제한할 수 있다.


CORS는 교차 출처로 요청을 전송할 수 있는 방식이다. / XML과 fetch 함수를 사용해 교차 출처로 요청을 전송하는 것은 동일 출처 정책에 따라 금지되어 있다. 구체적으로는 교차 출처에서 받은 응답의 리소스에 대한 접근이 금지되어 있다. / 그러나 응답에 포함된 HTTP 헤더에 접속해도 좋다는 허가가 주어진 리소스는 접근이 가능하다. 이때 HTTP 헤더를 CORS 헤더라고 한다. CORS 헤더에는 접근을 허락하는 요청의 조건이 기재되어 있으며, 조건을 만족하는 요청이면 브라우저는 자바스크립트를 사용한 접근을 허가한다. 조건과 일치하지 않으면 자바스크립트로 접근할 수 없고 응답을 파기한다.


추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책