byc3***
2021-03-21

웹 애플리케이션 보안의 정찰, 공격, 방어를 모두 다루는 실용서. 웹 애플리케이션에 침투하기 위해 해커가 실제로 사용하는 여러 기법을 소개하고 안전을 확보하는 법을 배운다. 각 장은 OWASP 취약점 중에서도 위험성이 높은 주제의 공격과 방어 양면을 다룬다.
[나의 한줄 추천사]
웹 개발할때 불안한(?) 느낌을 받으면 이 책을 보라
[책을 구매한 이유]
웹 어플리케이션 프론트엔드 백엔드 둘다 개발해야하는 경우 두쪽다 보안적으로 취약한 부분을 시큐어 코딩으로 해야하는데 이때 보면 정말 좋은 책이다.
[내가 찾고자 했던 질문과 대답들]
1. 보안 취약점을 어떻게 찾을까?
- 취약점을 찾기 위해서는 "현대 웹 어플리케이션 구조" 을 먼저 알아야 한다. 아래와 같은 구조를 갖는다.
: REST API, JSON, 자바스크립트, SPA Framework (React, Vue, AngularJS), 인증 및 권한 부여시스템,
하나 이상의 웹서버(주로 linux 이용), 하나 이상의 웹서버 패키지(ExpressJS, Apache, Nginx), 하나 이상의
데이터베이스(MySQL, MongoDB), 클라이언트의 로컬 데이터 스토어(Cookies, 웹 스토리지, IndexedDB)
2.어떻게 공격할까?
- XSS (Cross Site Scripting) : 사이트 간 스크립팅.
: 게시판이나 웹 메일 등에 자바스크립트 같은 스크립트 코드를 삽입해 개발자가 고려하지 않은 기능이 작동하게 하는 치명적인 공격이다.
주료 여러 사용자가 보게 되는 전자게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다.
- CSRF (Cross Site Request Forgery) : 사이트 간 요청 위조
: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다.
XSS 을 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린거라면, CSRF는 특정 웹사이트가 사용자
의 웹브라우저를 신용하는 상태를 노린 것이다.
- SQL Injection : SQL 삽입
: 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식
을 말한다. 주로 사용자가 입력한 데이터를 제대로 필러팅, 이스케이핑하지 못했을 경우에 발생한다.
3.어떻게 방어할까?
- 안전한 어플리케이션 아키텍처
: SSL / TLS 네트워크 중간에서 악의적인 해킹을 피하기 위해서 모든 데이터는 전송중에 암호화 시킨다.
이중인증 (패스워드 + OTP) 적용.
- 보안코드 리뷰
:전체 리뷰하는 부분은 불가능한 방법이라, 고위험 영역을 먼저 실시하여 리스크를 최소화하는 방법으로
우선순위가 부여된 상태의 코드리뷰가 이뤄지면 된다.
- XSS 공격 방어
: Content-Security-Policy meta 태그에 추가함으로써 공격 회피가 가능하다.
- CSRF 공격 방어
:Origin 헤더와 Referer 헤더를 검증한다.CSRF 토큰을 이용해서 강력한 방지도 가능하다.
- SQL Injection 공격 방어
: prepared statement 역할을 하는 저장 프로시저를 이용하면 대부분 방지가 가능하다.
파라미터에 인코딩 이스케이프를 활용하여 사전에 막는 방법도 있다.