学习笔记:如何阻止Web应用存储敏感数据
在某些情况下,自定义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应用存储敏感数据的更多相关文章
- Spring实战第八章学习笔记————使用Spring Web Flow
Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- Spring实战第五章学习笔记————构建Spring Web应用程序
Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- Ruby学习笔记4: 动态web app的建立
Ruby学习笔记4: 动态web app的建立 We will first build the Categories page. This page contains topics like Art, ...
- 【学习笔记】移动Web手册(PPK力作)
又是好久没写博客了,最近把近半年的总结,全部总结到博客园吧.先写最近的一个移动端的学习笔记.毕竟移动端开发了一段时间,就写一写读<移动web手册>中,对我感触比较深的几个点—— 一.浏览器 ...
- twisted学习笔记No.3 Web Clients
原创博文,转载请注明出处. 这一章我们学习利用twisted建立web 客户端. twisted.web.client.getPage用来异步下载一个页面,并且返回一个deferred from tw ...
- 《从零开始学Swift》学习笔记(Day2)——使用Web网站编写Swift代码
Swift 2.0学习笔记——使用Web网站编写Swift代码 原创文章,欢迎转载.转载请注明:关东升的博客 Swift程序不能在Windows其他平台编译和运行,有人提供了一个网站swiftstub ...
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
随机推荐
- 使用vue的v-model自定义 checkbox组件
<template id='c'> <input type="checkbox" :checked="checked" v-on:change ...
- AngularJS 的常用特性(三)
6.表达式 在模板中使用表达式是为了以充分的灵活性在模板.业务逻辑和数据之间建立联系,同时又能避免让业务逻辑渗透到模板中. <div ng-controller="SomeContr ...
- vue监听不到props中的值时
已解决: watch: { data: { immediate: true, handler: function(newVal) { console.log(newVal); } } },
- mysql 最小配置 及 安装
[mysqld] # 设置3306端口 port= # 设置mysql的安装目录 basedir=D:\-Installer\-MySQL\mysql--winx64 # 设置mysql数据库的数据的 ...
- 微信小程序随笔。笔记本忘家里了
所有ui组件都有的共有属性id.class.style.hidden.data-*.bind* / catch*.
- vs2015中的数据库架构对比工具(New Schema Comparison)
大家都知道VS里的功能多到你根本没用过,今天来说说这个New Schema Comparison,他能做的事情就是在vs中对比我们两个数据库的架构.结构,并且能够更新过去或者生成脚本. Step.1( ...
- SpringBoot 之Quartz的使用
对于Quartz的使用,还是想说一句,SpringBoot真的很好用啊! 第一步:当然是引入依赖啦 <parent> <groupId>org.springframework. ...
- 最新的dubbo和zookeeper整合的问题
最新的dubbo和zookeeper整合的问题 生活本不易,流人遂自安 博主最新在做小项目练手,在进行dubbo和zookeeper整合的时候遇到了一些问题,在这里这些问题做个小总结吧. 首先需要说明 ...
- input输入框限制(座机,手机号码)
记录一下 座机input输入框: <input style="width:100px;" id="tel" type="text" o ...
- js 判断浏览器是否64位
js判断是否64位 浏览器 navigator.userAgent.match(/x64/i);