[python] Flask-WTF에서 CSRF 토큰을 생성하고 검증하는 방법은 어떻게 되나요?

Flask-WTF는 Flask 웹 애플리케이션에서 사용자 입력 폼을 처리하기 위한 좋은 도구입니다. 이것은 보안 기능 중 하나로 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위한 CSRF 토큰을 생성하고 검증하는 기능을 제공합니다.

CSRF 공격은 악의적인 사용자가 다른 웹사이트를 통해 사용자의 계정을 사용하여 악의적인 요청을 보내는 것입니다. Flask-WTF는 이러한 공격을 방지하기 위해 각 폼에 고유한 CSRF 토큰을 추가하여 요청이 유효한지 확인합니다.

다음은 Flask-WTF를 사용하여 CSRF 토큰을 생성하고 검증하는 방법 예시입니다.

  1. Flask-WTF 모듈을 설치합니다.
pip install Flask-WTF
  1. Flask-WTF 모듈을 import 합니다.
from flask_wtf import FlaskForm
from flask_wtf.csrf import CSRFProtect
from wtforms import StringField, SubmitField
  1. Flask 애플리케이션에 CSRF 보호를 추가합니다.
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
csrf = CSRFProtect(app)
  1. FlaskForm을 상속받은 폼 클래스를 생성합니다.
class MyForm(FlaskForm):
    name = StringField('Name')
    submit = SubmitField('Submit')
  1. CSRF 토큰을 포함한 폼 객체를 생성합니다.
@app.route('/form', methods=['GET', 'POST'])
def form():
    form = MyForm()
    if form.validate_on_submit():
        # 유효한 폼이 제출되었을 때의 동작
        return 'Form submitted successfully!'
    return render_template('form.html', form=form)
  1. HTML 템플릿에서 CSRF 토큰을 포함한 폼을 렌더링합니다.

<form method="POST" action="{{ url_for('form') }}">
  {{ form.csrf_token }}
  {{ form.name.label }} {{ form.name() }}
  {{ form.submit() }}
</form>

이렇게 하면 Flask-WTF를 사용하여 CSRF 토큰을 생성하고 검증할 수 있습니다. 이를 통해 애플리케이션의 보안을 향상시키고 CSRF 공격을 방지할 수 있습니다.

Flask-WTF 문서에서 더 자세한 정보를 찾을 수 있습니다. (https://flask-wtf.readthedocs.io/)