Django를 배우다 보니 가끔 CSRF와 cors 등 보안과 관련된 용어들이 등장한다.
오늘은 CSRF와 XSS에 대해서 알아보았다.
CSRF(Cross Site Request Forgery)
- 공격자의 요청이 사용자의 요청(CRUD)인 것처럼 속이는 웹 해킹 기법
- Server를 대상으로 한 공격
- 사용자의 권한으로 사용자는 모르게 웹 요청을 시도
예시)
- 사용자가 자주 이용하는 은행 웹사이트에 logged in 했다.
- 동시에 이상할 것이 없는 blog에 들어가 글을 읽는다.
- blog에 접속하고 있는 동안 사용자 모르게 은행 웹사이트에 사용자의 권한으로 이체 요청을 보낸다.
- 은행 웹사이트는 이 요청이 사용자의 것으로 이해하고 요청을 받아들인다.
- 결국 사용자의 계좌에서 공격자의 계좌로 사용자 모르게 돈이 이체가 되었다.
Django의 CSRF 공격에 대한 방어
- CSRF token을 사용
- POST 요청에 대해서만 CSRF token을 발급하고 체크
- 사용자가 로그인 할 때마다 CSRF token 값이 변경됨
- <form> 태그 안에 {% csrf_token %}를 사용
<form action="/todo/create/" method="post">
{% csrf_token %}
<input type="text" name="content" id="content" />
<button type="submit">Submit!</button>
</form>
XSS(Cross-Site Scripting)
- 게시판이나 웹 메일 등에 script 코드를 삽입하는 웹 해킹 기법
- 사용자를 대상으로 한 공격
- 공격자가 심어 놓은 script가 삽입 된 website를 볼 경우, browser은 자동으로 그 script를 실행시켜서 원하지 않는 action이 실행 됨
LIST
'Computer Programming > AI' 카테고리의 다른 글
WIL_일곱 번째 주 (0) | 2023.09.22 |
---|---|
TIL_Django REST Framwork, POSTMAN을 사용하는 이유 (0) | 2023.09.22 |
TIL_Django REST Framework, Cookie&Session와 Token의 차이점 (0) | 2023.09.20 |
TIL_Dango Rest Framework(DRF)를 사용하는 이유 (0) | 2023.09.19 |
TIL_Django REST Framework(DRF) (0) | 2023.09.18 |