Computer Programming/AI

TIL_Django Basics, CSRF와 XSS

JYCoder 2023. 9. 21. 20:57

Django를 배우다 보니 가끔 CSRF와 cors 등 보안과 관련된 용어들이 등장한다.

오늘은 CSRF와 XSS에 대해서 알아보았다.

 

CSRF(Cross Site Request Forgery)

  • 공격자의 요청이 사용자의 요청(CRUD)인 것처럼 속이는 웹 해킹 기법
  • Server를 대상으로 한 공격
  • 사용자의 권한으로 사용자는 모르게 웹 요청을 시도

예시)

  1. 사용자가 자주 이용하는 은행 웹사이트에 logged in 했다.
  2. 동시에 이상할 것이 없는 blog에 들어가 글을 읽는다.
  3. blog에 접속하고 있는 동안 사용자 모르게 은행 웹사이트에 사용자의 권한으로 이체 요청을 보낸다.
  4. 은행 웹사이트는 이 요청이 사용자의 것으로 이해하고 요청을 받아들인다.
  5. 결국 사용자의 계좌에서 공격자의 계좌로 사용자 모르게 돈이 이체가 되었다.

 

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