浏览器安全概述
浏览器安全概述
- 浏览器的工作机制:向整个互联网请求指令,请求到以后几乎不加任何质疑地执行。
揭秘浏览器
与Web应用休戚与共
同源策略(SOP)
- 目标:限制不同源地资源之间地交互,而同一来源的资源间的交互是不受限制的。
- 同源:对于不同的页面,如果他们主机名、协议端口都相同,则为同一来源。
HTTP首部
首部内容决定了接收方如何处理被发送的内容。
标记语言
标记语言用于描述内容的显示方式。
- HTML
- XML
CSS
CSS(层叠样式表)是浏览器为网页内容指定样式的主要方法。
脚本
- JavaScript
- VBScript(只有微软浏览器支持)
DOM
DOM(文档对象模型)是在浏览器中操作HTML或XML文档的API,规范定义了通过脚本操作实时文档的方法。
渲染引擎
渲染引擎负责把数据转换为用户在屏幕上可以看到的样式。
- WebKit:目标是成为通用的软件应用程序交互与展示引擎
- Trident(闭源、微软)
- Gecko(Firefox)
- Presto
- Blink(Google)
Geolocation
Geolocation API 为移动和桌面浏览器访问设备地理位置信息而开发的。
Web存储
Web存储(DOM存储),可看成超级cookie。
- 存储机制
- 本地存储:将数据持久保存在本地
- 会话存储:只在会话期间保存数据
- Web存储与cookie的区别
- 只有JavaScript可以创建Web存储,HTTP首部不行
- Web存储中的数据不会随请求发送给服务器
- 本地存储没有所谓的路径限制
同源策略也适用于本地存储,而且每个来源都会分开。其他来源的资源不能访问当前的本地
存储,子域也不行。
跨域资源共享(CORS)
- 跨域资源共享(CORS)是一个让来源忽略同源策略的规范。
- Web应用可以通过XMLHttpRequest跨域访问任何资源(浏览器向某服务器发送了跨域XMLHttpRequest请求),服务器则通过HTTP首部通知浏览器它是否接受访问:
HTML5
- WebSocket:可以在浏览器与服务器之间打开一条即时响应的全双工信道。
- Web Worker:可以看作在浏览器后台运行的线程
- 两种Web Worker
- 在同一来源的资源间共享
- 只能与创建它的函数通信
- 两种Web Worker
- 操作历史
- WebRTC:实现浏览器之间的互相通信
隐患
强化防御的发展
HTTP首部
内容安全策略(CSP)
内容安全策略(CSP)是为了降低XSS隐患,定义了指令与内容的差别。
服务器会发送CSP HTTP首部Content-Security-Policy或X-Content-Security-Policy,以规定可以从哪里加载脚本,同时还规定了对这些脚本的限制。
安全cookie标志
secure cookie的目的是告诉浏览器不要通过任何不安全的渠道发送cookie。
HttpOnly cookie标志
HttpOnly cookie标志指示浏览器禁止任何脚本访问cookie内容。
X-Content-Type-Options
nosniff指令可以强制浏览器按照Content-type首部来渲染内容。
Strict-Transport-Security
Strict-Transport-Security指示浏览器必须通过有效的HTTPS通道与网站通信。
X-Frame-Options
X-Frame-Options HTTP首部用于阻止浏览器中的页面内嵌框架,保证不把接收到的页面显示在一个IFrame中。
反射型XSS过滤
沙箱
浏览器沙箱
隔离操作系统赋予浏览器的权限和在浏览器中运行的子程序的权限。
IFrame沙箱
沙箱IFrame指的是给这个嵌入的帧添加一个HTML5属性,只能限于与一个来源通信。
反网站钓鱼和恶意软件
混入内容
混入内容网站:某个来源使用HTTPS协议,然后又通过HTTP请求内容。
核心安全问题
攻击面
- 升级速度
- 静默更新
- 扩展
- 插件
放弃控制
浏览器必须将很大一部分控制权让渡给服务器。
TCP协议控制
加密通信
浏览器与服务器间加密通信的目标,是保护通信双方传输的数据安全,但也没有机会检查到恶意数据。
同源策略
浏览器攻击方法
初始化
初始控制:每次攻击都以在浏览器中运行指令为开端。为此浏览器必须遇到并执行你控制的指令。
持久化
这个阶段,你要尽量降低失去浏览器控制权的可能,不让用户切换网址,或者关闭浏览器。
攻击
七种核心攻击方法:
- 绕过同源策略
- 攻击用户
- 攻击浏览器
- 攻击扩展
- 攻击插件
- 攻击Web应用
- 攻击网络
参考文献
《黑客攻防技术宝典——浏览器》