CSRF 란?
Cross-Site Request Forgery의 줄임말로 HTML 안에 또 다른 HTML 코드를 넣어 사용자가 의도하지 않은 동작을 하도록 만드는 공격방법으로 사용자의 쿠키 등 정보를 훔쳐가는 등 사이트와 서버간 요청시 들어와 불법적인 행동을 수행한다.
{% csrf_token %} 를 사용하여 방지할 수 있다.
CSRF 토큰은 서버와 클라이언트 간에서 사용 방식
서버는 세션에 CSRF 토큰을 집어넣고 웹 페이지를 생성할 때 CSRF 토큰을 포함시킵니다. 사용자가 액션을 수행할 때 이 CSRF 토큰을 요청과 함께 전송하면 서버에서 일치하는지 확인합니다. 이때 일치하지 않는다면 해당 접근을 공격으로 인식하고 요청을 거절합니다.
토큰이 발급되는 위치
CSRF 토큰은 서버 측에서 생성되어 템플릿을 통해 클라이언트로 전달됩니다.
주로 템플릿을 통해 폼에 포함되거나 AJAX 요청의 헤더에 추가되어 클라이언트와 서버 간의 요청의 안전성을 확보합니다.
1. 템플릿을 통해 폼에 포함되는 경우
- form 에서 request.method 가 post 일때 넣어줍니다.
2. js ajax에서 POST를 통해 보내는 경우에 요청 헤더에 포함시키는 경우
// jQuery를 사용하는 예시
$.ajax({
url: '/some-url/',
type: 'post',
headers: {
'X-CSRFToken': '{{ csrf_token }}'
},
data: { /* 요청 데이터 */ },
success: function(response) {
// 응답 처리
}
})
'Development > WEB' 카테고리의 다른 글
캐시,세션,쿠키 (0) | 2023.08.11 |
---|---|
HTTP, HTTPS (0) | 2023.08.11 |