반응형
크로스 사이트 요청 위조(CSRF) 이해
사용자가 인지하지 못한 상황에서 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격
공격 대상은 XSS와 다르게 서버를 대상으로 공격 시도
프레임별 옵션 설정하는 방법
Django에서 CSRF 옵션 세팅
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
# MIDDLEWARE csrf . 목록에서 항목을 활성화 한다
'django.middleware.csrf.CsrfViewMiddleware',
......
]
settings.py에서 미들웨어 부분에 csrf 부분을 활성화해준다.
이후 스크립트에서 csrf 토큰을 명시해 준다.
html에서 토큰 입력 부분
- form 태그 안에 적용해 준다.
<!--html page-->
<form action="" method="POST">
<!--csrf_token 사용 -->
{% csrf_token %}
<table>
{{form.as_table}}
</table>
<input type="submit"/>
</form>
Flask에서 CSRF 옵션 설정
from flask import Flask
from flask_wtf.csrf import CSRFProtect
# CSRF 설정 추가
csrf = CSRFProtect(app)
app = Flask(__name__)
app.config[‘SECRET_KEY’] = os.environ.get('SECRET_KEY')
csrf.init_app(app)
html에서 csrf 토큰 명시
- input 태그 부분에 명시해 준다.
<form action="" method="POST">
<!-- form csrf_token 태그 내부에 적용-->
<input type="hidden" name="csrf_token" value="{{ csrf_token }}" />
<table>
{{table}}
</table>
<input type="submit"/>
</form>
CSRF 예방 하기 정리
1. 사용자로 받은 요청이 의도대로 작성되었는지 확인하는 과정이 필요함(화이트리스트, 필터링 등)
2. 파이썬에서 자주 활용되는 Django와 Flask에서는 csrf 점검해 주는 라이브러리가 있고, 이를 설정해 주면 예방에 도움이 됨
반응형
'IT > 앱사용방법' 카테고리의 다른 글
시큐어코딩) 파이썬 웹개발 비밀번호(암호) 변경 기능 구현 (0) | 2022.06.26 |
---|---|
시큐어코딩) 파이썬 포맷 스트링 삽입 공격 예방(예시 코드 포함) (0) | 2022.06.17 |
시큐어코딩) 파이썬 피싱공격 예방(기초 코드 예시포함) (0) | 2022.06.14 |
한글 보안저장 문서 수정 못하게 하는 방법(pdf 저장 아님) (0) | 2022.06.13 |
시큐어코딩) 파이썬 파일 업로드 공격 예방 하는 방법(기초) (0) | 2022.06.02 |