Созданы ли они для страницы или сеанса?
Из Django официальной документации :
A CSRF cook ie, основанный на случайном секретном значении, к которому другие сайты не будут иметь доступа.
Этот cook ie устанавливается CsrfViewMiddleware. Он отправляется с каждым ответом, который вызвал django .middleware.csrf.get_token () (функция, используемая для извлечения токена CSRF), если он еще не был установлен в запросе.
In Для защиты от атак BREACH токен не просто секрет; случайная соль добавляется к секрету и используется для ее шифрования.
В целях безопасности значение секрета изменяется каждый раз, когда пользователь входит в систему
Это означает, что secret
, используемый для генерации токенов CSRF, генерируется per-session
(вид).
При проверке значения поля 'csrfmiddlewaretoken', только секрет, а не полный токен сравнивается с секретом в значении повара ie. Это позволяет использовать постоянно меняющиеся токены. Хотя каждый запрос может использовать свой собственный токен, секрет остается общим для всех.
Эта проверка выполняется CsrfViewMiddleware.
Это означает, что при желании мы можем сгенерировать другой токен CSRF. в соответствии с нашими потребностями (например, per-page
), но секрет останется прежним.
Возможно, вы захотите прочитать также ответ Радвана .