반응형
- CSRF ( 사이트 간 요청 위조 ) -
1. CSRF ( Cross Site Request Forgery ) 란?
- 사이트 간 요청 위조
- 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법
2. 어떤식으로 동작하는가? ( 이미지 태그를 통한 공격 )
- A라는 사이트의 관리자 권한을 갖고 있는 유저가 A라는 사이트에 로그인되어 있는 상태이고
- A라는 사이트에 관리자가 유저의 권한을 변경할 때 사용되는 다음과 같은 URL이 있다고 할 때
- GET /changeUserAuth?id=programmer93&auth=ROLE_ADMIN ( programmer93의 권한을 admin으로 변경 )
- 공격자가 사용자한테 무작위 이메일을 보낼 때 해당 url이 걸려있는 아래와 같은 이미지 태그를 추가한다.
<img src="http://localhost:8080/changeUserAuth?id=programmer93&auth=ROLE_ADMIN" width="0" height="0">
- 이 이메일을 여는 순간 브라우저는 img 태그에 있는 src 주소에 가서 이미지를 가져오려고 해당 주소에 접속한다.
- 이때 A 사이트에 이미 로그인 되어 있는 관리자 권한의 유저이기에 해당 URL에 접속이 되면서 공격이 성공한다.
3. 방어 방법은 ?
- Request의 Referer 검증 방법
- 이 방법은 서버단에서 Request의 Header안에 있는 Referrer를 참조하여 도메인이 해당 사이트에서 온 요청인지를 확인하는 방법이다.
- 대부분의 상황에서 CSRF 공격을 차단할 수 있다.
- Security Token 사용 방법
- 서버단에서 세션에 임의의 난수를 저장한 후 사용자에게 난수 값을 전달하고 사용자는 이 난수 값을 요청과 함께 보내 정상적인 요청인지 확인하는 방법
- 대부분의 상황에서 CSRF 공격을 차단할 수 있다.
반응형
'WEB' 카테고리의 다른 글
PRG 패턴 (Post-Redirect-Get) - 삽질중인 개발자 (0) | 2021.07.04 |
---|