사이버 보안 도서 모음: 애플리케이션 보안
개발자를 위한 편. 자기 손으로 만들어 넣는 취약점과, 그것을 넣지 않는 방법.
사이버 보안 도서 모음: 애플리케이션 보안
아홉 편 중 다섯 번째. 개발자를 위한 묶음이다. 자기 손으로 만들어 넣는 취약점과, 그것을 넣지 않는 방법을 다룬다.
여기 실린 책은 거의 전부 월요일 아침의 업무에 바로 쓸 수 있다.
Dafydd Stuttard, Marcus Pinto. The Web Application Hacker's Handbook (2판, 2011)
웹 공격을 망라한 두꺼운 참고서. 요즘 프런트엔드나 API 이야기는 전혀 없지만, 취약점 분류와 테스트 방법론은 여전히 이 분야 최고다.
주제: 인증과 세션 관리 메커니즘, 접근 제어, 온갖 종류의 인젝션, 애플리케이션 로직 공격, 사용자를 겨눈 공격, 애플리케이션을 끝에서 끝까지 훑는 방법론.
Michal Zalewski. The Tangled Web (2011)
브라우저가 실제로 어떻게 동작하는지, 그리고 웹의 보안 모델이 왜 이런 모습인지. 그 문제들을 직접 찾아낸 사람이 썼다.
주제: 출처와 동일 출처 정책, DOM과 그 격리, 쿠키와 그 한계, 브라우저의 콘텐츠 처리, 보안 헤더, 90년대에서 물려받은 메커니즘.
Malcolm McDonald. Web Security for Developers (2020)
남의 코드를 시험하는 대신 직접 코드를 쓰는 사람을 위한, 짧고 최신인 책. 앞의 두 권에 앞서 들어가기 좋다.
주제: 브라우저와 HTTP의 동작, 인젝션, XSS와 CSRF, 비밀번호의 안전한 저장, 의존성과 거기 딸려 오는 취약점, 서버 설정, 자동화된 공격에 대한 방어.
Tanya Janca. Alice and Bob Learn Application Security (2020)
보안을 출시 직전의 별도 단계가 아니라 개발 과정 안에 심는 이야기.
주제: 보안 요구사항과 설계, 안전한 코딩, 파이프라인 안의 테스트와 도구, 비밀 정보 다루기, 개발과 보안이 협력하는 문화.
Adam Shostack. Threat Modeling: Designing for Security (2014)
코드를 쓰기 전에 「여기서 무엇이 잘못될 수 있는가」에 체계적으로 답하는 법을 가르치는 유일한 책.
주제: 데이터 흐름도, STRIDE 방법론, 공격 트리, 찾아낸 위협의 우선순위 매기기, 위협 모델링을 업무 흐름에 붙이기.
Neil Madden. API Security in Action (2020)
기본 인증부터 분산 시스템까지, 동작하는 코드와 함께 보는 API 보안.
주제: API의 인증과 인가, 토큰과 그 보관, OAuth 2와 OpenID Connect, 요청 속도 제한, 마이크로서비스와 쿠버네티스에서의 보안, 상호 TLS.
Justin Richer, Antonio Sanso. OAuth 2 in Action (2017)
프로토콜을 안쪽에서 분해하는 책. 클라이언트도, 인가 서버도, 보호 자원도 직접 만들어 보게 한다.
주제: OAuth 2의 흐름과 어느 것을 언제 쓸지, 클라이언트와 서버 양쪽의 흔한 구현 실수, 액세스 토큰과 리프레시 토큰, JWT, OpenID Connect와의 관계.
Dan Bergh Johnsson, Daniel Deogun, Daniel Sawano. Secure by Design (2019)
이 책의 논지는 이렇다. 취약점 대부분은 빠뜨린 검사가 아니라 잘못된 도메인 설계에서 나온다. 엄격한 도메인 모델이 오류의 부류 자체를 없애는 과정을 보여준다.
주제: 검증 대신 타입, 불변 객체, 컨텍스트 경계, 오류 처리, 클라우드와 분산 아키텍처에서의 보안, 레거시 코드 다루기.