Django использует CSRF для каждой страницы или сеанса? - PullRequest
0 голосов
/ 23 января 2020

Мне интересно, какова политика Django по умолчанию для генерации CSRF? Они созданы на странице или за сеанс? И если это за сессию, почему это выбрано? Разве это не менее безопасно, чем CSRF на страницу?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Чтение 1022 * Официальной документации о CSRF действительно полезно

Объясняет, как это внутренне работает как промежуточное ПО, если вы go для этого раздел , точка 3

Для всех входящих запросов, не использующих HTTP GET, HEAD, OPTIONS или TRACE, должен присутствовать объект CSRF cook ie, а также поле 'csrfmiddlewaretoken' присутствовать и исправиться. Если это не так, пользователь получит ошибку 403.

При проверке значения поля 'csrfmiddlewaretoken' только секрет, а не полный токен, сравнивается с секретом в значении cook ie , Это позволяет использовать постоянно меняющиеся токены. Хотя каждый запрос может использовать свой собственный токен, секрет остается общим для всех.

Эта проверка выполняется CsrfViewMiddleware.

Это означает, что вы будете иметь возможность генерировать токены. -Page.

Если ваши требования требуют создания нового токена csrf для каждого запроса / страницы, извлеките этот вопрос и ответы на него , они действительно полезны.

1 голос
/ 23 января 2020

Созданы ли они для страницы или сеанса?

Из 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), но секрет останется прежним.

Возможно, вы захотите прочитать также ответ Радвана .

...