장바구니 담기 close

장바구니에 상품을 담았습니다.

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

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

  • 히라노 마사시
  • |
  • 제이펍
  • |
  • 2024-01-02 출간
  • |
  • 280페이지
  • |
  • 188 X 245 X 14mm
  • |
  • ISBN 9791192987552
판매가

26,000원

즉시할인가

23,400

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
23,400

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

목차

옮긴이 머리말 ix

베타리더 후기 xi

머리말 xiii

감사의 말 xvi

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

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

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

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

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

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

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

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

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

APPENDIX B 한국어판 부록 251

B.1 보안 체크리스트 251

참고문헌 255

찾아보기 260

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.