Рубрики
Без рубрики

Как включить защиту CSRF в приложении Python / Flask?

Что такое CSRF? CSRF подпитывается для пересечения запроса на сайт. Это уязвимость безопасности, которая заставляет … Помечено с Python, WebDev, Security, Novers.

Что такое 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 должен быть добавлен как нормальное поле в шаблоне флоскоформа:

{{ form.csrf_token }}
  • Если шаблон просмотра использует нормальную форму 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”