- CSRF란
- CSRF의 원리
- CSRF 방어 방법
1. CSRF란
CSRF는 공격자가 만든 악성 스크립트가 포함된 URL을 사용자가 실행하게 되면, 사용자의 세션을 이용하여 사용자가 의도하지 않은 작업을 수행하는 공격입니다.
대표적으로 패스워드 변경, 송금 등이 있습니다.
2. CSRF의 원리
CSRF 공격이 성립하기 위해 충족되야하는 조건이 있습니다.
1. 사용자는 보안이 취약한 서버로부터 이미 로그인되어 있는 상태여야 합니다.
2. 쿠키 기반의 서버 세션 정보를 획득할 수 있어야 합니다.
3. 공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악하고 있어야 합니다.
위 조건이 만족되었을 때 CSRF공격이 가능하게 됩니다.
CSRF공격의 시나리오는 다음과 같습니다.
1. 사용자가 보안이 취약한 서버에 로그인되어있다.
2. 공격자의 악성 스크립트가 포함된 URL을 사용자가 접속하게된다.
3. 악성 스크립트에 담겨있는 내용이 사용자 세션 ID를 이용해 실행되게된다.
4. 서버는 해당 내용을 사용자가 요청한것으로 인식하고 실행하게 된다.
3. CSRF 방어방법
1. Referrer 검증
Request header에 포함된 Referer는 현재 요청된 페이지의 링크 이전의 웹페이지 주소를 포함합니다.
Referrer를 검증해서 해당 요청이 요청될 수 있는 위치인지 검사를 하면 CSRF를 막을 수 있습니다.
2. CSRF 토큰 검증
로그인을 할 때 CSRF 토큰을 생성하여 세션에 저장해 둡니다.
CSRF 토큰을 페이지 요청태그의 hidden값에 넣어줍니다.
Ex) <input type="hidden" name="_csrf" value="${CSRF_TOKEN}" />
이후 요청을 할 때마다 CSRF 토큰을 같이 보내어, 서버에서 토큰을 검증합니다.
'Security > Webhacking' 카테고리의 다른 글
SQL injection 공격 (0) | 2024.05.12 |
---|---|
XSS문제 실습 (0) | 2024.05.10 |
Cookie & Session (0) | 2024.05.08 |