Что такое CSRF?
CSRF обозначает C росс S ite. R уравнение F оргия. Это уязвимость безопасности, которая заставляет конечный пользователь на неосознанно Пусть злоумышленники выполняют вредоносные действия в отношении имени конечного пользователя на чувствительном веб-сайте, в настоящее время они в настоящее время аутентифицируются в такие как их банк или социальный счетчик средств массовой информации.
Чтобы выполнить эти типы атак, злоумышленники обычно знают активность конечного пользователя вместе с уязвимыми веб-сайтами CSRF, к которому имеет доступ конечный пользователь. Если конечный пользователь произойдет, чтобы посетить сайт злоумышленника при аутентификации на веб-сайте (такой как банковский счет пользователя), злоумышленник может выполнить злонамеренные действия в отношении имени конечного пользователя, потенциально повреждая владение пользователя на их аутентифицированном веб-сайте.
Как предотвратить атаки CSRF?
Получить запросы следует использовать только для получения информации из веб-приложения. Если запросы на получение используются для изменяющихся операций, таких как передача денег с учетной записи пользователя, параметры детализации передачи будут частью URL:
http://bank.com/transfer.doishacct=bob&amount=100
Отказ Этими типом запросов GET легче для нападающих.Чувствительные/изменяющиеся меры изменения/состояния в приложении должны выполняться только с последующими запросами с помощью механизма подачи формы.
Запросы на изменяющиеся состояния должны быть выполнены с помощью токена CSRF, который генерируется сервером и отправляется в браузер конечного пользователя. Обычно эти токены будут трудно догадаться от злоумышленника. Вот пример сгенерированного токена CSRF:
Как включить защиту CSRF в приложении Flask?
Flask Framework не имеет защиты CSRF из коробки. Однако защита CSRF может быть включена с расширением Flask-WTF.
- Используйте ниже команду для глобально включения защиты CSRF в приложении:
from flask_wtf.csrf import CSRFProtect csrf = CSRFProtect(app)
Защита CSRF требует, чтобы секретный ключ надежно подписать токен. По умолчанию Secret_key Secret_key используется для этой безопасной подписи. При желании для этой цели можно настроить отдельный ключ, называемый WTF_CSRF_SECRET_KEY.
Представления с использованием Flaskforms автоматически включаются с защитой CSRF. Токен CSRF должен быть добавлен как нормальное поле в шаблоне флоскоформа:
Если шаблон просмотра использует нормальную форму HTML, токен CSRF должен быть добавлен в виде скрытого поля:
Если приложение использует запрос AJAX, токен CSRF должен быть добавлен с помощью заголовка X-CSRFTOKEN.
Хотя не рекомендуется, некоторые маршруты могут быть освобождены от защиты CSRF, используя
@ csrf.Expelt
декоратор.
Заключение
Поскольку уязвимость CSRF является одним из 10 лучших уязвимостей OwaSP, веб-приложения для разработчиков, используя Flask Framework, должны убедиться, что они включают защиту CSRF с помощью расширения Flask-WTF.
Использованная литература:
Оригинал: “https://dev.to/dev0928/how-to-enable-csrf-protection-in-the-python-flask-app-5age”