Почему в ответе HTTP должны использоваться как no-cache, так и no-store? - PullRequest
112 голосов
/ 15 мая 2009

Мне сказали, чтобы предотвратить утечку информации о пользователе, только "без кеша" в ответе недостаточно. "нет магазина" также необходимо.

Cache-Control: no-cache, no-store

После прочтения этой спецификации http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html, Я все еще не совсем уверен, почему.

В настоящее время я понимаю, что это только для промежуточного сервера кеша. Даже если в ответе нет кэша, сервер промежуточного кэша может сохранять содержимое в энергонезависимой памяти. Промежуточный сервер кеша примет решение, использовать ли сохраненный контент для следующего запроса. Однако, если в ответе «нет хранилища», промежуточный сервер кэша не должен хранить контент. Так что это безопаснее.

Есть ли какая-то другая причина, по которой нам нужны "no-cache" и "no-store"?

Ответы [ 11 ]

0 голосов
/ 23 января 2019

OWASP обсуждает это:

В чем разница между директивами управления кэшем: no-cache и no-store?

Директива no-cache в ответе указывает, что ответ не должен использоваться для обслуживания последующего запроса, т. Е. В кеше не должно отображаться ответ, для которого в заголовке установлена ​​эта директива, но должен позволять серверу обслуживать запрос. Директива no-cache может содержать некоторые имена полей; в этом случае ответ может быть показан из кэша, за исключением указанных имен полей, которые должны обслуживаться с сервера. Директива no-store применяется ко всему сообщению и указывает, что кэш не должен хранить какую-либо часть ответа или любой запрос, который его запрашивал.

Я полностью в безопасности с этими директивами?

Нет. Но, в общем, используйте Cache-Control: no-cache, no-store и Pragma: no-cache, в дополнение к Expires: 0 (или достаточно позднюю дату по Гринвичу, такую ​​как эпоха UNIX). Не HTML-типы контента, такие как pdf, текстовые документы, электронные таблицы Excel и т. Д., Часто кэшируются, даже если установлены вышеуказанные директивы управления кэшем (хотя это зависит от версии и дополнительного использования must-revalidate, pre-check = 0, post-check = 0, max-age = 0 и s-maxage = 0 на практике иногда может привести, по крайней мере, к удалению файла при закрытии браузера, в некоторых случаях из-за особенностей браузера и реализации HTTP). Кроме того, функция «Автозаполнение» позволяет браузеру кэшировать все, что пользователь вводит в поле ввода формы. Чтобы проверить это, тег формы или отдельные входные теги должны включать атрибут Autocomplete = "Off". Однако следует отметить, что этот атрибут является нестандартным (хотя он поддерживается основными браузерами), поэтому он нарушит проверку XHTML.

Источник здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...