[python] Flask-WTF에서 CSRF 토큰을 어떻게 생성하고 검증할 수 있나요?

CSRF 토큰을 생성하려면 flask_wtf.csrf.generate_csrf 함수를 사용합니다. 이 함수는 특정한 요청에서 CSRF 토큰을 생성하여 반환합니다. 다음은 Flask-WTF를 사용하여 CSRF 토큰을 생성하는 예제 코드입니다.

from flask_wtf.csrf import generate_csrf

@app.route('/some_form')
def some_form():
    csrf_token = generate_csrf()
    return render_template('some_form.html', csrf_token=csrf_token)

위 코드에서 generate_csrf 함수를 호출하여 csrf_token 값을 얻은 후, 해당 토큰을 템플릿(render_template)으로 전달하여 사용자에게 보여줍니다.

CSRF 토큰을 검증하려면 flask_wtf.csrf.validate_csrf 함수를 사용합니다. 이 함수는 특정한 요청에서 전달받은 CSRF 토큰을 검증하고, 유효하지 않을 경우 BadRequest 익셉션을 발생시킵니다. 다음은 Flask-WTF를 사용하여 CSRF 토큰을 검증하는 예제 코드입니다.

from flask_wtf.csrf import validate_csrf

@app.route('/submit_form', methods=['POST'])
def submit_form():
    csrf_token = request.form.get('csrf_token')
    validate_csrf(csrf_token)
    # CSRF 토큰 검증이 성공한 경우, 폼 데이터 처리 로직을 작성합니다.
    return 'Form submitted successfully.'

위 코드에서 validate_csrf 함수를 호출하여 csrf_token 값을 검증하고, 유효하지 않을 경우 BadRequest 익셉션을 발생시킵니다. 이후에는 CSRF 토큰 검증이 성공했기 때문에, 폼 데이터 처리 로직을 작성할 수 있습니다.

Flask-WTF를 사용하면 간편하게 CSRF 토큰을 생성하고 검증할 수 있으며, 이를 통해 웹 애플리케이션의 보안을 강화할 수 있습니다.

참고자료: