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 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 чтобы дать браузеру указание не хранить в кэше конфиденциальные данные. Например:
4 Set Pragma Header:
- Несмотря на то, что Pragma header считается несколько устаревшим, его все еще можно использовать для совместимости. Установите для Pragma значения no-cache:
5 Set Expires Header:
- Используйте Expires header со значением в прошлом, чтобы обеспечить немедленное истечение срока действия:
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:
- Документируйте изменения, внесенные в приложение для включения заголовков антикэширования. Эта документация может быть полезна при проведении аудита, обеспечении соответствия требованиям и при дальнейших разработках.