Skip to main content

V8.2.1 Client-side Data Protection

Requirement:#

Verify the application sets sufficient anti-caching headers so that sensitive data is not cached in modern browsers.

Explanation:#

Требование определяет необходимость предотвращения кэширования конфиденциальных данных в современных веб-браузерах. Требование предполагает установку соответствующих антикэширующих заголовков, гарантирующих, что конфиденциальная информация не будет храниться в кэше клиента.

1 Caching in Web Browsers:

  • Современные веб-браузеры реализуют механизмы кэширования для локального хранения ресурсов на стороне клиента. К ним относятся изображения, таблицы стилей, сценарии и даже данные, получаемые из веб-приложений.

2 Sensitive Data:

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

3 Anti-Caching Headers:

  • HTTP headers играют важную роль в управлении поведением кэша. Устанавливая антикэширующие заголовки, веб-приложение дает браузеру указание не хранить определенные ресурсы или данные в своем кэше. Это позволяет предотвратить локальное хранение конфиденциальной информации.

4 Cache-Control Header:

  • обычно используется для управления поведением кэша. Установка указывает на то, что ресурс не должен храниться ни в каком кэше, включая кэш браузера.

5 Pragma Header:

  • header является более современным Pragma  header с дериктивой no-cache представляет собой более старый подход, позволяющий достичь аналогичных результатов. Для совместимости можно использовать оба header.

6 Expires Header:

  • В Expires header указывается дата и время в прошлом, что позволяет считать ресурс просроченным и не кэшировать его.

7 Preventing Information Leakage:

  • Установка антикэширующих заголовков не только защищает конфиденциальные данные, но и помогает предотвратить утечку информации. Если пользователь обращается к конфиденциальной информации, она не должна быть доступна из кэша браузера последующим пользователям.

8 Security Best Practice:

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

Example HTTP Header:

Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Expires: 0

В данном примере Cache-Control header указывает, что ресурс не должен храниться (no-store), а Pragma header со значением no-cache усиливает это указание.

Expires header со значением 0 гарантирует, что ресурс будет считаться немедленно истекшим.

Remediation:#

Для того чтобы обеспечить соответствие приложения требованиям, необходимо убедиться в том, что в веб-приложении установлены достаточные антикэширующие заголовки для предотвращения кэширования конфиденциальных данных в современных браузерах.

1 Identify Sensitive Data:

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

2 Update HTTP Response Headers:

  • Измените HTTP response headers, включив в них директивы антикэширования. Обычно это делается на стороне сервера. Для управления кэшированием используются такие заголовки, как Cache-Control, Pragma и Expires.

3 Set Cache-Control Header:

  • Используйте Cache-Control header с директивой no-store чтобы дать браузеру указание не хранить в кэше конфиденциальные данные. Например:
Cache-Control: no-store, no-cache, must-revalidate

4 Set Pragma Header:

  • Несмотря на то, что Pragma header считается несколько устаревшим, его все еще можно использовать для совместимости. Установите для Pragma значения no-cache:
Pragma: no-cache

5 Set Expires Header:

  • Используйте Expires header со значением в прошлом, чтобы обеспечить немедленное истечение срока действия:
Expires: 0

6 Implement Server-Side Cache-Control:

  • Обеспечьте, чтобы логика приложения на стороне сервера включала соответствующие директивы управления кэш-памятью в HTTP-response. Это может потребовать настройки веб-сервера или фреймворка приложения для добавления необходимых заголовков.

7 Test and Verify:

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

8 Educate Developers:

  • Ensure that your development team is aware of the importance of anti-caching headers and follows best practices when handling sensitive data.

9 Continuous Monitoring:

  • Документируйте изменения, внесенные в приложение для включения заголовков антикэширования. Эта документация может быть полезна при проведении аудита, обеспечении соответствия требованиям и при дальнейших разработках.

Additional:#