У меня есть приложение Django для электронной коммерции, которое автоматически проверяет все входящие запросы с помощью токена CSRF, используя CSRFViewMiddleware
.Руководство по проверке CSRF
Теперь для платежей я использую платежный шлюз, где передаю соответствующие данные вместе с csrfmiddlewaretoken
, чтобы он был возвращен мне, когда транзакция на стороннем сайте завершена. Поэтому, когда пользователь перенаправляется обратно на мой сайт, я получаю
403 Forbidden
CSRF verification failed. Request aborted.
Как исправить это? Есть ли способ, которым я могу вручную проверить csrftoken
, используя request.POST.get('csrfmiddlewaretoken')
или что-то в этом роде.
Я бы предпочел не обойти csrf полностью, как я хочу, чтобы он был безопасным (по крайней мере, насколько это возможно).
Редактировать Я понимаю csrfmiddleware
маркера должен быть передан в заголовке, но я не могу этого сделать, поскольку есть только ограниченные вещи, которые я могу сделать с 3-платежным шлюзом стороны.
Вам не следует передавать токен CSRF на сторонние сайты. –
@BurhanKhalid достаточно честный. Дело в том, что у меня есть несколько вариантов оплаты, где я обрабатываю некоторые параметры, а другие обрабатываются сторонним сайтом. Как мне защитить этот процесс?) –
В отличие от человека, любая наполовину достойная внешняя служба не может быть обманута при отправке запроса на ваш сайт с информацией с другого сайта (злоумышленника). Большинство из них также не зависят от файлов cookie или сеансов, поэтому атаки CSRF по своей сути бесполезны. Вы защищаете запрос каким-либо механизмом аутентификации, предоставляемым сторонним сервисом. – knbk