Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프로그래머스
- 로그남기기
- 인하대학교
- CrossAngle
- 우분투비트확인
- 심플소프트웨어
- 결과를얻는법
- Xangle
- jaypark.dating
- 봉사활동
- 노트북덮개
- 타코트론
- 서버로그
- 인하멘토링
- 서구동구예비군훈련장
- 신영준
- tacotron
- 나는리뷰어다
- 놀이동산의슈퍼컴퓨터를작동시켜라
- graphicdriver
- 쇠막대기
- 한빛미디어
- texttospeech
- intell
- 개발자를위한파이썬
- 인천남중
- 프로그라피
- machinelearning
- 2019회고
- 개발자회고
Archives
- Today
- Total
jc.jang
4강 CSRF 본문
주제
-
Form을 위한 장고의 기본 보안기능으로서 '사이트간 요청 위조 공격'을 어느 정도 막아주는 기능이 있다.
노트
-
사이트 간 요청 위조 공격이란?
-
사용자가 의도하지 않게 게시판에 글을 작성하거나, 쇼핑을 하게하는 등의 공격
<body onload="document.attack_form.submit();">
<form name="attack_form" method="post" action="http://site-victim.com/new/ ">
<input type="hidden" name="title" value="스팸 제목" />
<input type="hidden" name="content" value="스팸 내용" />
</form>
</body>
-
현재 사이트의 웹 페이지가 로드 되면 "http://site-victim.com/new/"로 form이 전송됨.
-
요청을 받는 서버 입장에서, 공격을 막기 위해 Token을 통한 체크
-
POST 요청에 한해 CsrfViewMiddleware를 통한 체크를 함
-
POST 요청을 받을 때 Token 값이 없거나 유효하지 않다면, 403 Forbidden 응답
-
처리 순서
-
입력 Form을 보여줄 때, Token 값도 값이 할당
-
그 입력 Form을 통해 Token값이 전달이 되면, Token 유효성 검증
-
Form 템플릿 HTML 코드에 {% csrf_token %}을 쓰는 이유!
-
-
CSRF Token 체크 기능에 대해
-
가급적이면 끄지 말자.
-
기본 제공되는 보안기능이다.
-
이를 유지하는 데에 비용이 거의 들지 않는다.
-
-
앱 API에서는 끄는 것이 필요할 수 있다.
-
앱에서는 get 요청을 통해 입력 폼을 받는 것이 아니기 때문! 앱에서 폼을 생성한다.
-
django-rest-framework에서는 관련 View에 대해 모두 배제
-
-
특정 View에 한해 CSRF Token 체크에서 배제하려면?
-
해당 뷰에 @csrf_exempt 장식자를 적용
-
-
요약
- 장고에서 보안을 위해 csrf 기본 보안 기능을 제공한다.
- 템플릿 코드에서 왜 {% csrf_token %}을 쓰는지 이제 알았다.
- 쿠키로 get 요청 시 제공한 csrf_token 값과 post 요청 시 받은 값을 통해 체크하는구나!
'Django > Django - Form,ModelForm' 카테고리의 다른 글
6강 Form Validation (0) | 2019.09.25 |
---|---|
5강 ModelForm (0) | 2019.09.24 |
3강 Form (0) | 2019.09.24 |
2강 HttpRequest와 HttpResponse (0) | 2019.09.17 |
1강 HTML Form (0) | 2019.09.17 |
Comments