이모저모

Flask WTF - CSRF 방어하기 본문

coding

Flask WTF - CSRF 방어하기

Jeo 2022. 1. 5. 20:24

 

# csrf 방어 토큰을 만들기 위해 secret key 필요하고, 이 아이는 flask에서의 secret key 사용할 수 있다고 .
    app.config['SECRET_KEY'] = 'secretkey'

https://github.com/hidekuma/gogglekaap/wiki/D.1.-CSRF-%EB%B0%A9%EC%96%B4:-Flask-WTF%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-CSRF-%EA%B3%B5%EA%B2%A9-%EC%A1%B0%EC%B9%98

 

GitHub - hidekuma/gogglekaap: Google keep Clone coding - Fastcampus 2021

Google keep Clone coding - Fastcampus 2021. Contribute to hidekuma/gogglekaap development by creating an account on GitHub.

github.com

from flask_wtf.csrf import CSRFProtect
from flask_wtf import FlaskForm

# CSRF (Cross Site Request Forgery) : 사이트간 요청 위조

 

FlaskForm을 상속받은 LoginForm, RegisterForm 등을 만들 수 있고,

flask-wtf를 통해 보호받아야 하는 엔드포인트, 메소드에 토큰을 함께 실어보내는 방식으로 CSRF 방어.

아, 토큰을 위해서는 secret_key도 필요하다.

	# csrf 방어 토큰을 만들기 위해 secret key 필요하고, 이 아이는 flask에서의 secret key 사용할 수 있다고 .
    app.config['SECRET_KEY'] = 'secretkey'

 

이런 식으로 라우터와 연결

from [앱패키지].[디렉토리].[FlaskForm 클래스 생성하는 파이썬파일명] import LoginForm, RegisterForm
    @app.route('/auth/login')
    def login():
        form = LoginForm()
        return render_template('login.html', form=form)

    @app.route('/auth/logout')
    def logout():
        return 'logout'

    @app.route('/auth/register')
    def register():
        form = RegisterForm()
        return render_template('register.html', form=form)
Comments