Библиотека CSRFProtect, защищаем проект Flask с примерами кода
Безопасность с CSRFProtect
CSRFProtect (Cross-Site Request Forgery Protection) – это расширение для Flask, которое помогает защитить ваше приложение от атак типа CSRF. Оно предотвращает возможность того, что запросы пользователей могут быть подделаны злоумышленниками, чтобы выполнить небезопасные действия на сайте.
Пример использования CSRFProtect на Flask:
from flask import Flask, redirect, render_template, request, session from flask_wtf.csrf import CSRFProtect app = Flask(__name__) csrf = CSRFProtect(app) app.secret_key = 'mysecretkey' @app.route('/') def index(): return render_template('index.html') @app.route('/login', methods=['POST']) def login(): session['user'] = request.form['username'] return redirect('/dashboard') @app.route('/dashboard') def dashboard(): if 'user' not in session: return redirect('/') return render_template('dashboard.html') if __name__ == '__main__': app.run(debug=True)
В этом примере CSRFProtect используется для защиты от подделки запросов в форме входа пользователя. При отправке формы пользователь вводит свое имя пользователя и пароль, которые сохраняются в сессии. Затем он перенаправляется на страницу панели управления. Если пользователь не аутентифицирован, он будет перенаправлен на основную страницу.
Включаем защиту CSRF на Flask
Чтобы включить защиту CSRF в своем проекте Flask, вы должны установить Flask-WTF и импортировать CSRFProtect из flask_wtf:
from flask_wtf.csrf import CSRFProtect
Затем вы должны создать экземпляр класса и привязать его к приложению:
from flask_wtf.csrf import CSRFProtect
Теперь, когда вы создаете форму, Flask-WTF в автоматическом режиме добавляет скрытую строку CSRF за счет использования тега `{% csrf_token() %}` в вашей форме. При отправке формы этот токен будет сравниваться с CSRF токеном в вашей сессии. Если они не совпадают, форма не будет отправляться.
```html <form method="POST"> {% csrf_token() %} <label>Username:</label> <input type="text" name="username"> <label>Password:</label> <input type="password" name="password"> <button type="submit">Login</button> </form> ```
Это обеспечивает дополнительный уровень безопасности для вашего приложения Flask и защищает вас от CSRF атак.
Анна Субботова
Related Posts
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.