浏览器安全学习

浏览器的工作机制:向整个互联网请求指令,请求到以后几乎不加任何质疑地执行。

同源策略


同源策略

同源策略:限制了来自不同源的document或脚本对当前document读取或设置某些属性

决定是否属于同一源的三大部分:协议、域名、端口

浏览器中,一些src属性(<script>,<img>,<iframe>,<link>)并不受同源策略限制,但浏览器限制了JavaScript的权限,使其不能读、写加载的资源内容,每次通过src加载资源,都相当于一次get请求

XMLHttpRequest

XMLHttpRequest(XHR)对象用于与服务器交互,进行http通信。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据.
XMLHttpRequest可以访问同源对象的内容,但受到同源策略的约数,不能跨站访问资源。但后来跨域请求需求迫切,W3C制定了XMLHttpRequest跨域访问标准:通过目标域返回的http头来授权是否允许跨站访问
该标准的安全基于:JavaScript无法控制http头这一事实
受到同源策略的还有:DOM、Cookie,XMLHttpRequest,浏览器加载的第三方插件(Flash、Java Applet、Silverlight等)

同源策略的作用过程

以Flash为例:
以www.qq.com的策略文件为例,当其他域的页面加载了Flash后,对www.qq.com发起访问请求,flash检查www.qq.com的策略文件是否存在(crossdomain.xml),然后检查发起的域是否在许可范围内
步骤:
通过目标网站提供的crossdomain.xml文件来判断是否允许当前“源”的Flash跨域访问目标资源
检查MIME以确认crossdomain.xml是否合法
检查crossdomain.xml是否在根目录下

浏览器一些基本知识

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首部通知浏览器它是否接受访问:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET

HTML5
WebSocket:可以在浏览器与服务器之间打开一条即时响应的全双工信道。
Web Worker:可以看作在浏览器后台运行的线程
两种Web Worker
在同一来源的资源间共享
只能与创建它的函数通信
操作历史
WebRTC:实现浏览器之间的互相通信

沙箱

浏览器沙箱
浏览器采取多进程的架构,将浏览器的各个功能模块分开,当一个进程崩溃时,也不会影响到其他进程。Sandbox即起到隔离作用,采用Sandbox,让不信任的网页代码,运行在一个受限制的环境中个,从而保证桌面系统的安全。

IFrame沙箱
沙箱IFrame指的是给这个嵌入的帧添加一个HTML5属性,只能限于与一个来源通信。

恶意网址拦截

浏览器周期性地从服务器获取一份最新的恶意网址名单,如果用户访问的网址存在于此名单中,浏览器就会弹出一个警告页面。
恶意网址有:挂马网站和钓鱼网站
一般浏览器厂商会推送恶意网址黑名单,所以对搜索引擎来说,这份黑名单也是核心竞争力之一。

混入内容
混入内容网站:某个来源使用HTTPS协议,然后又通过HTTP请求内容。

XSS Filter(IE 8)

用于对抗XSS,当URL包含了XSS脚本时,IE就会修改关键字来使得攻击无法完成

HTTP首部

Conten Security Policy(CSP)(Firefox 4)
由服务器返回一个HTTP头,并在其中描述页面该遵守的安全策略,由于XSS在没有第三方插件的帮助情况下,无法控制http头,所以这项措施是可行的。
使用方法
插入一个http返回头:

X-Content-Security-Policy:policy

CSP的配置比较复杂,在页面较多的情况下,难以一个个地配置起来,所以并未得到很好的推广。

安全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

核心安全问题

攻击面
1.升级速度
2.静默更新
3.扩展
4.插件
放弃控制
浏览器必须将很大一部分控制权让渡给服务器。

TCP协议控制
加密通信
浏览器与服务器间加密通信的目标,是保护通信双方传输的数据安全,但也没有机会检查到恶意数据。

同源策略

浏览器攻击方法

初始化
初始控制:每次攻击都以在浏览器中运行指令为开端。为此浏览器必须遇到并执行你控制的指令。

持久化
这个阶段,你要尽量降低失去浏览器控制权的可能,不让用户切换网址,或者关闭浏览器。

攻击
七种核心攻击方法:

1.绕过同源策略
2.攻击用户
3.攻击浏览器
4.攻击扩展
5.攻击插件
6.攻击Web应用
7.攻击网络

猜你喜欢

转载自blog.csdn.net/qq_51558360/article/details/113831243