본문 바로가기

IT 개념

CSRF (Cross-Site request forgery)

https://velog.io/@shroad1802/CSRF

CSRF

csrf란? > Cross-site request forgery, 사이트 간 요청 위조 사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다. csrf의 예시

velog.io

CSRF 는 사이트 간 요청 위조를 의미하며, 웹사이트 취약점 공격 중 하나입니다.

사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말합니다.

CSRF 방어

CSRF는 다른 사이트에서 요청을 보내는 공격이기 때문에 다른 사이트에서 오는 요청을 막거나,

올바른 사이트에서 보내는지 확인하는 수단이 필요하다.

1. CORS 적용

1) CORS를 이용해서 사이트 간 요청을 불가능하게 만든다.

2) 만약에 CORS를 허용한다면 Side Effect가 없을 것으로 예상되는 OPTIONS, HEAD, GET 메소드에 대해서만

허용하는 것이 좋다.

3) CORS는 <script></script> 사이에서 생성된 XMLHttpRequest 요청에만 해당되기 때문에 위에서 예시로 든

공격을 막을 수 없다.

2. referer 헤더 설정

1) 요청을 한 페이지의 정보가 담긴 Referer 헤더 속성을 검증하여 차단하는 방법

2) 같은 도메인 상에서 요청이 들어오지 않는다면 차단하도록 하는 방법

3. Synchronizer Token Pattern (csrf token)

1) 랜덤한 값을 사용자의 세션에 저장하여 사용자의 모든 요청(Request)에 대하여 서버 쪽에서 검증하는 방법

2) 요청을 받을 때마다 세션에 저장된 토큰 값과 요청 파라미터에서 전달되는 토큰 값이 같은지 검증

<input type="hidden" name="_csrf" value="{{csrfToken}}">

4. Double Submit Cookie

1) Security Token 검증의 한 종류로 세션을 사용할 수 없는 환경에서 사용할 수 있는 방법.

2) 웹 브라우저의 Same Origin 정책으로 인해 Javascript에서 타 도메인의 쿠키 값을 확인/수정하지

못한다는 것을 이용한 방어 기법

3) 스크립트 단에서 요청 시 난수 값을 생성하여 쿠키에 저장하고 동일한 난수 값을 요청 파라미터

(혹은 헤더)에도 저장하여 서버로 전송, 서버 단에서 쿠키의 토큰 값과 파라미터의 토큰 값이

일치하는지만 검사

 

 

'IT 개념' 카테고리의 다른 글

HTTP ? HTTPS?  (0) 2021.06.22
HTTP 구조, 자주 사용되는 Status code  (0) 2021.06.22
Spring Security  (0) 2021.06.21
Forward, Redirect  (0) 2021.06.18
싱글톤 객체  (0) 2021.06.18