CSRF token: защита вашего сайта от атак
CSRF токен (Cross-Site Request Forgery) - это механизм защиты от атак, при которых злоумышленник может выполнить вредоносную операцию от имен имеющих права пользователя. Такие атаки возможны, если веб-приложение не проверяет и не ограничивает действия, которые пользователь может выполнять.
CSRF токен является одним из методов защиты от этого типа угроз. Он представляет собой уникальную строку, которая генерируется при каждом новом запросе к серверу. Затем этот токен передается вместе с запросом и проверяется на сервере. Если токен не совпадает с токеном, сохраненным на сервере, то запрос отклоняется.
Токен может быть передан на сервер с помощью различных способов, например, с использованием скрытого поля формы, заголовка CSRF-защиты или параметра URL.
Пример генерации CSRF токена на стороне сервера:
python
from flask import Flask, session
import secrets
app = Flask(__name__)
app.secret_key = secrets.token_hex(32) # генерация секретного ключа
@app.route('/')
def index():
token = secrets.token_hex(16) # генерация CSRF токена
session['csrf_token'] = token
return render_template('index.html', csrf_token=token)
Пример проверки CSRF токена на стороне сервера:
python
from flask import request, abort, session
@app.route('/submit', methods=['POST'])
def submit():
csrf_token = session.get('csrf_token')
if not csrf_token or csrf_token != request.form.get('csrf_token'):
abort(403)
# обработка запроса
Пример передачи CSRF токена в форме:
html
Важно отметить, что использование CSRF токенов не является панацеей и должно дополняться другими мерами защиты, такими как XSS-защита, правильная обработка входных данных, проверка прав доступа и т.д.