在某些情况下,自定义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等代理服务器来检查服务器的响应,并检查包含敏感信息的每个页面。在这些网页中,确保服务器正在发送正确的响应头域,并指示浏览器不缓存任何数据。交流Q2881064156

学习笔记:如何阻止Web应用存储敏感数据的更多相关文章

  1. Spring实战第八章学习笔记————使用Spring Web Flow

    Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...

  2. ASP.NET MVC Web API 学习笔记---第一个Web API程序

    http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...

  3. Spring实战第五章学习笔记————构建Spring Web应用程序

    Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...

  4. HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  5. Ruby学习笔记4: 动态web app的建立

    Ruby学习笔记4: 动态web app的建立 We will first build the Categories page. This page contains topics like Art, ...

  6. 【学习笔记】移动Web手册(PPK力作)

    又是好久没写博客了,最近把近半年的总结,全部总结到博客园吧.先写最近的一个移动端的学习笔记.毕竟移动端开发了一段时间,就写一写读<移动web手册>中,对我感触比较深的几个点—— 一.浏览器 ...

  7. twisted学习笔记No.3 Web Clients

    原创博文,转载请注明出处. 这一章我们学习利用twisted建立web 客户端. twisted.web.client.getPage用来异步下载一个页面,并且返回一个deferred from tw ...

  8. 《从零开始学Swift》学习笔记(Day2)——使用Web网站编写Swift代码

    Swift 2.0学习笔记——使用Web网站编写Swift代码 原创文章,欢迎转载.转载请注明:关东升的博客 Swift程序不能在Windows其他平台编译和运行,有人提供了一个网站swiftstub ...

  9. HTML5 学习笔记(三)——本地存储

    目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...

随机推荐

  1. Mac 10.12安装Go2Shell在资源管理器快速打开Shell并跳转到指定位置

    下载: (链接: https://pan.baidu.com/s/1qXAUqxY 密码: bf7g)

  2. 全面解析C#中参数传递

    一.引言 对于一些初学者(包括工作几年的人在内)来说,有时候对于方法之间的参数传递的问题感觉比较困惑的,因为之前在面试的过程也经常遇到参数传递的基础面试题,这样的面试题主要考察的开发人员基础是否扎实, ...

  3. ToolkitScriptManager vs. ScriptManager 关于“只能向页面中添加 ScriptManager 的一个实例”讨论

    在使用ASP.NET设计AJAX功能网页时,需要首先声明ToolkitScriptManager或者ScriptManager控件,这些全局的脚本核心控制,然后才能使用众多的AJAX控件.如果没有创建 ...

  4. 我也介绍下sizeof与strlen的区别

    本节我也介绍下sizeof与strlen的区别,很简单,就几条: 1. sizeof是C++中的一个关键字,而strlen是C语言中的一个函数:2. sizeof求的是系统分配的内存总量,而strle ...

  5. Java二进制兼容性原理

    一.概述 现在的软件越来越依赖于不同厂商.作者开发的共享组件,组件管理也变得越来越重要.在这方面,一个极其重要的问题是类的不同版本的二进制兼容性,即一个类改变时,新版的类是否可以直接替换原来的类,却不 ...

  6. ftp&nginx搭建图片服务器

    下面使用ftp+nginx搭建一个简单的服务器 ftp用于文件的传输 nginx提供http服务 nginx服务器的安装和配置可以参照之前的教程:nginx安装及其配置详细教程 下面介绍ftp服务的安 ...

  7. linux mint19 解决docker必须使用sudo问题

    1 安装完docker 使用时,提示权限不够 ~$ docker info Got permission denied while trying to connect to the Docker da ...

  8. [中英对照]Device Drivers in User Space: A Case for Network Device Driver | 用户态设备驱动: 以网卡驱动为例

    前文初步介绍了Linux用户态设备驱动,本文将介绍一个典型的案例.Again, 如对Linux用户态设备驱动程序开发感兴趣,请阅读本文,否则请飘过. Device Drivers in User Sp ...

  9. 第十四章、Linux 账号管理与 ACL 权限配置

    1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...

  10. 开始使用 Vuejs 2.0 ---简单总结1

    Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vuejs 采用自底向上增量开发的设计.Vuejs 的核心库只关注视图层,并且非常容 ...