Можете объяснить, что такое защитный токен против атак CSRF?
Answer from AI
sobes.tech AI
Защитный токен против атак CSRF (Cross-Site Request Forgery) — это уникальный случайный идентификатор, который сервер генерирует и вставляет в формы или запросы пользователя. Когда пользователь отправляет форму, токен возвращается на сервер, который проверяет его корректность. Если токен отсутствует или не совпадает, сервер отклоняет запрос.
Это предотвращает атаки, при которых злоумышленник пытается выполнить нежелательные действия от имени пользователя, используя его авторизованную сессию, так как у злоумышленника нет доступа к этому уникальному токену.
Пример на Python с использованием Flask и библиотеки Flask-WTF:
from flask import Flask, render_template_string
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config['SECRET_KEY'] = 'секретный_ключ'
csrf = CSRFProtect(app)
class MyForm(FlaskForm):
name = StringField('Имя')
submit = SubmitField('Отправить')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return 'Форма успешно отправлена'
return render_template_string('''
<form method="post">
{{ form.hidden_tag() }}
{{ form.name.label }} {{ form.name() }}
{{ form.submit() }}
</form>
''', form=form)
if __name__ == '__main__':
app.run()
Здесь hidden_tag() вставляет CSRF-токен в форму, и Flask-WTF автоматически проверяет его при отправке.