CSRF (Cross-Site Request Forgery)
csrf는 클라이언트 사이드 취약점으로 교차 사이트 요청 위조 라고 부른다.
즉, 임의 이용자의 권한으로 HTTP 요청을 보내는 것을 말한다.
CSRF 동작
HTML태그와 JavaScript 코드를 이용할 수 있다.
1. HTML 태그
<img src="https://example.com/money?send=1000000" width=0px height=0px>
👆 img태그를 이용할 수 있다. img태그는 이미지 url에 있는 이미지를 불러오는 태그이므로 이미지를 불러오기 위해선 해당 url에 get 요청을 보내게 된다. 즉, HTTP 요청을 보낼 수 있다.
2. JavaScript
window.open("https://example.com/money?send=1000000");
👆 새 창을 여는 코드나 locatioj.href 등과 같은 코드를 이용하면 원하는 url에 HTTP 요청을 보낼 수 있다.
XSS와의 차이점
사실 XSS와 공격 원리는 똑같다고 볼 수 있다. CSRF와 XSS 모두 악성 스크립트를 작성하고 웹 페이지에 이를 삽입하여 임의 사용자가 해당 스크립트를 실행 시키는 환경을 만든다.
둘의 차이점이라고 하면 목적에서 찾을 수 있다.
XSS는 임의 사용자의 권한을 탈취하는게 목적이라면
CSRF는 임의 사용자의 권한으로 HTTP 요청을 보내는 것이 목적이다. 비슷하지만 목적에서 약간의 차이점이 있다.