Ресурсы · 63

HTTP-кэширование: защита персонализированных ответов

Разделите общий, частный и прикладной кэш, проверьте ключи, повторную проверку и аннулирование после изменения прав доступа.

Обновлено · 3 min

Чего помогает достичь это руководство

  • Слои инвентаризации
  • Выбор срока хранения
  • Проверка ключей
  • Повторная проверка и изменение

Быстрая проверка

  • Означает ли отсутствие кэша, что ничего не сохраняется?
  • Защищает ли Vary права доступа?
  • Следует ли кэшировать каждый API?

Пошаговый метод

  1. 1

    Слои инвентаризации

    Перечислите кэши браузера, CDN, прокси, сервис-воркера и приложения. Классифицируйте публичные и персонализированные ответы. Политика HTTP не описывает автоматически кэширование, реализованное в коде.

    Результат: диаграмма слоев и владельцев.

  2. 2

    Выбор срока хранения

    RFC 9111 различает директивы: no-cache требует проверки перед повторным использованием, no-store запрещает соответствующее хранилище HTTP, а unqualified private исключает общее хранилище. Ни одна из них сама по себе не гарантирует конфиденциальность системы.

    Результат: политика хранения для каждого ответа.

  3. 3

    Проверка ключей

    Проверка метода, URI и измерений, изменяющих представление. Vary касается полей запроса; Это не авторизация. Необходимо проверить пропущенные языковые параметры, согласование формата и контекст учетной записи на уровне приложения.

    Результат: ключи и тесты разделения.

  4. 4

    Повторная проверка и изменение

    Тестирование новых и устаревших ответов, обновлений данных и отозванных прав. Проверка ETag, условной проверки и поведения при недоступности источника. Ранее правильный ответ может стать конфиденциальным после отзыва.

    Результат: трассировка до и после.

  5. 5

    Воспроизведение с двумя учетными записями.

    Использование вымышленных идентификаторов и маркеров. Чередование запросов к одному и тому же URI с использованием теплого и холодного кэша. Проверка выхода из системы, прямых ссылок и логирования без записи реальных токенов.

    Результат: негативные тесты и стратегия аннулирования.

Многоразовый рабочий лист

Заполните ваши авторизованные наблюдения. Эти поля являются рабочим шаблоном, а не наблюдаемыми результатами.

ПолеИнформация для записи
РеагированиеОбщедоступный или персонализированный; Размеры
СлойКэш, владелец и ключ
ПолитикаСохранение, актуальность и проверка
Пробный запускВымышленный отчет, изменение и наблюдение

Вымышленный пример

Иллюстративная ситуация

Вымышленный пример: CDN повторно использует ответ профиля по одному и тому же URI для двух тестовых учетных записей.

Решение и ожидаемые доказательства

В сценарии обнаруживается утечка, проверяется политика и ключи, затем воспроизведение происходит после исправления и отзыва доступа.

Различение механизмов

МеханизмНазначениеПроверка или ограничение
no-cacheРазрешить хранение с обязательной проверкойНе следует воспринимать это как отсутствие хранения
Неквалифицированное частное хранилищеИсключить общее кэшированиеНе следует воспринимать это как гарантию конфиденциальности
no-storeПредотвратить соответствующее HTTP-хранилищеПроверять кэш и историю приложений отдельно

Показатели управления

ПоказательЧто он измеряетПервое действие
Разделение учетных записейНет метки от другой учетной записиПроверить тело, ссылки и метаданные
Возраст и проверкаПовторное использование в соответствии с политикойПроверить срок действия и недоступный источник
Задержка аннулированияВремя до исправления представленияНазвать каждый слой устаревшим

Распространенные ошибки

  • Не следует воспринимать это как отсутствие хранения
  • Не следует воспринимать это как гарантию конфиденциальности
  • Проверять кэш и историю приложений отдельно

Часто задаваемые вопросы

Означает ли отсутствие кэша, что ничего не сохраняется?

Нет. Требуется проверка перед повторным использованием; это не запрещает хранение, как это делает no-store.

Защищает ли Vary права доступа?

Нет. Он участвует в выборе представления; авторизация остается отдельной.

Следует ли кэшировать каждый API?

Нет. Преимущества зависят от стоимости, актуальности и риска. Конфиденциальные ответы могут оправдывать отказ от использования общих кэшей.

Официальные ссылки

Ссылки подтверждают метод. Адаптируйте проверки к вашему контексту; они не являются сертификацией. Оригинальные названия ссылок и исходные документы могут быть на другом языке.

Источники проверены .