Я пытаюсь найти разницу между сервером, настроенным с параметром «cache-control max-age = 0, необходимо повторно проверить», и сервером с параметром «cache-control: no-cache, no-store». Итак, во-первых, насколько я понимаю, это вообще не кеширование конфиденциальной информации, поскольку максимальный возраст равен 0, и клиент должен каждый раз повторно проверять подлинность для изменения. Однако некоторые из моих пожилых людей упомянули, что все еще уязвимы !! Однако я не вижу, чтобы мой сканер получил этот флаг. Так,
Кэширование HTTP (S) определено в RFC 7234; в настоящее время нет заменяющего документа, поэтому вам следует обратиться к нему.
В no-cache
Директива ответа немного неверна. Это не запрещает кеширование документа. Это позволяет кэшировать документ, но он сразу же считается устаревшим и должен быть повторно проверен на исходном сервере перед использованием. Вы заметите, что это точно такая же семантика, что и max-age=0, must-revalidate
. В обоих случаях содержимое кэшируется, и если сервер отправляет ответ 304 на запрос проверки, можно использовать кэшированный документ.
Чтобы фактически запросить кеш, чтобы не кэшировать документ, вы должны использовать no-store
. В этом случае даже не обязательно указывать no-cache
так как документ все равно не будет кэшироваться! Но это может быть намного медленнее, чем no-cache
в одиночку, поскольку документ должен быть полностью повторно загружен каждый раз, когда пользователь обращается к нему.
Возможно, дело в том, что один из Cache-Control
директивы, которые вы использовали в качестве примеров, не содержали no-store
- это то, о чем говорили ваши старшие, хотя называть это «уязвимостью» сильно преувеличивает, и вопрос о том, является ли это проблемой безопасности (хотя опять же, обычно это конфиденциальность), зависит от контента, который вы обслуживаете.
В большинстве случаев, когда вы отправляете пользовательскую информацию, достаточно установить Cache-Control: private
и разрешить браузеру пользователя кэшировать данные, в то время как общие кеши не будут кэшировать их. Я не могу придумать ничего из того, что действительно нужно no-store
d, кроме, возможно, закрытых ключей, кодов запуска ядерных установок, данных, которые меняются каждые 15 секунд и т. д.