Michael Cobb是认证信息系统安全架构专家(CISSP-ISSAP),知名的安全作家,具有十多年丰富的IT行业经验,并且还从事过十六年的金融行业。他是Cobweb Applications公司的创始人兼常务董事,该公司主要提供IT培训,以及数据安全和分析的支持。Michael还合著过IIS Security一书,并为领先的IT出版物撰写过无数科技文章。此外,Michael还是微软认证数据库系统管理员和微软认证专家。
在某些情况下,自定义Web应用会保存敏感(专有)数据到用户的缓存文件夹中。如果不重新架构该应用,使用Sysinternals SDelete的注销脚本是否可以确保数据完全被删除且没有任何可恢复残留呢?
Michael Cobb:Secure Delete或SDelete是Windows命令行使用程序,它可以用来安全地删除现有文件以及磁盘未分配部分的文件数据。然而,你并不能使用它来清除远程用户设备中的数据;你的Web应用开除的注销脚本不会被授予权限来运行这种强大的工具,对于Web应用数据保护,这是完全错误的工具。还有更有效的方法来确保敏感数据不会被保留在用户的缓存文件夹中。
浏览器保存页面资源有两个目的:历史记录和缓存。历史记录功能允许用户快速还回以前浏览过的页面,而缓存则用来提高性能。下载的内容(例如标志或博客文章)被存储在用户设备的缓存文件夹中,这样每次用户观看内容时就不用重复下载。因缓存或历史记录目的而存储的内容随后都可以通过查看浏览器的缓存或者简单地按下浏览器的“后退”按钮来查看。这可能让信用卡信息和用户名等敏感数据面临风险。
为了避免这种隐私威胁,我们没有必要重新设计应用,只需利用数字证书和每个网页中的一些额外的缓存控制头域就可以解决缓存信息的问题。首先安装一个Web服务器证书,并通过HTTPS提供所有内容;这将为应用和用户之间传输的数据提供保密性。由于浏览器有不同的默认行为来缓存HTTPS内容,包含敏感信息的页面应该包括缓存控制头域,以确保内容不会被缓存。为了涵盖各种浏览器版本,避免内容被缓存的完整头域应该是:
具体如下:
• 缓存控制“no-store”将防止请求和响应被缓存存储
• 添加“private”将放置代理服务器缓存页面
• 通过设置“must-re-validate”,“Back”按钮不再会显示敏感数据
• “max-age”选项表明响应被缓存的时间,将其设置为“0”可以防止缓存
现在的浏览器往往较少依赖于“Expires”头域,但为了确保安全性,企业应该将过期时间设置为“0”,以防止较旧浏览器的缓存。为了与HTTP/1.0兼容,响应还应该包括“Pragma: no-cache”头域。“no-transform”对移动用户很重要,因为有些移动运营商会压缩或修改内容来节省带宽。
在部署这些变更后,开发人员应该测试应用不再泄露敏感数据到浏览器缓存。对每个主流浏览器的缓存文件夹的手动搜索可以确保不会存储敏感数据。如果发现数据,使用WebScarab等代理服务器来检查服务器的响应,并检查包含敏感信息的每个页面。在这些网页中,确保服务器正在发送正确的响应头域,并指示浏览器不缓存任何数据。