Я работаю над проектом Django и могу сделать CSRF-атаку с внешнего URL или файла. Как я могу это заблокировать?
Атака состоит:
- Я создаю файл с таким содержанием:
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="https://XXXXXX.com/YYYYY/AAAAAA/LLLLLL">
<input type="submit" value="Submit request" />
</form>
</body>
</html>
Я захожу на мою страницу Я открываю файл в том же браузере Отправляю кнопку
Запрос принят и действие выполнено.
Спасибо за все:)
Решено
django.middleware.csrf.CsrfViewMiddleware
не обеспечивает защиту csrf, если запрос GET
# Assume that anything not defined as 'safe' by RFC7231 needs protection
if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'):
if getattr(request, '_dont_enforce_csrf_checks', False):
# Mechanism to turn off CSRF checks for test suite.
# It comes after the creation of CSRF cookies, so that
# everything else continues to work exactly the same
# (e.g. cookies are sent, etc.), but before any
# branches that call reject().
return self._accept(request)