-> 공격자가 예측할수 없는 인증정보를 요청할때 같이보냄 ex) 옛날 비밀번호
-> CSRF를 방지하기위해 임의의 토큰을 발행후 클라이언트 세션등에 저장
-> 요청할때 CSRF-TOKEN 같이보냄
-> 서버는 서버에 저장된 CSRF-TOKEN이랑 요청할때 보내는 CSRF-TOKEN과 비교후 같으면 요청처리 다르면 요청 거부
-> 클라이언트가 요청을 보낼때 그 요청이 발생한 웹사이트 URL을 포함하는 헤더
-> 요청이 어디서 왔는지 확인가능
-> 요청이 올바른 출처에서 왔는지 확인하기 위해 HTTP referer를 사용하여 확인
-> 올바른 출처란-> 웹어플리케이션이 허용한 도메인 또는 경로
| Referer Check 우회법 | |
|---|---|
| 우회법 | <meta name="referer" content="no-referer"> - 요청할때 header에 referer 없앰 |
| 가능한 원리 | 보통 서비스의 편의를 위해 error가 발생하면 통과시킴 |
| 적용이 안된다면 | referer check를 재대로 구현한다면 사실상 우회불가능 |
| XSS | CSRF | |
|---|---|---|
| 정의 | 클라이언트 측에서 실행하는 스크립트를 삽입해서 공격 | 피해자가 원하지 않지만 공격자가 원하는 어떤 요청을 보내게 만드는 공격 |
| 공격방향 | 클라이언트 측 | 클라이언트 측 |
-> URL로 파라미터를 전달 ex) URL?pw=123
-> 웹요청을 <body>에 넣어서 보냄
--> 보내는 방법 Javascript, <form> 사용
---> XSS 도움이 필요
-> CSRF는 서버로 보내는 모든 요청에 발생할 수 있음
-> 모든것에 다 CSRF 방지는 무리
-> 컨설턴트의 개인의 주관이 들어감 ex) 게시판 글쓰기 누구는 위험 누구는 안전
Normaltic Study 13주차