CSRF(Cross Site Request Forgery)
1) 정의
- 사이트 간 요청 위조
- 이용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격
- CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행해야 함. 이를 위하여 메일 보내거나 게시글 작성하는 방법이 있음
2) 방법
- CSRF 공격 스크립트는 HTML 또는 Javascript를 통해 작성됨
- 이미지 불러오는 img 태그 사용하거나 웹 페이지에 입력된 양식 전송하는 form 태그 사용하는 방법이 있음
- 주의) 서버에서 이용자 식별을 위하여 쿠키를 사용하고 있어야 CSRF 취약점으로 공격 가능
3) XSS와의 비교
- 공통점: 클라이언트를 대상으로 하는 공격이며, 이용자가 악성 스크립트가 포함된 페이지에 접속하도록 유도해야 함
- 차이점: 공격에 있어 목적이 다름
> XSS는 인증 정보인 세션 및 쿠키 탈취를 목적으로 하는 공격이며, 공격할 사이트의 오리진에서 스크립트를 실행
> CSRF는 이용자가 임의 페이지에 HTTP 요청을 보내는 것을 목적으로 하는 공격이며, 공격자는 악성 스크립트가 포함된 페이지에 접근한 이용자의 권한으로 웹 서비스의 임의 기능 실행 목적
4) 예시
- <img src="/admin/target_page?userid=admin" />
> script 태그가 필터링되어도 img 태그 및 src를 활용하여 공격 가능
- <img src="/change_password?id=admin&pw=12345" />