同源策略
什么是同源策略(Same Origin Policy)?
- 浏览器的同源策略,限制了来自不同源的
document
或脚本之间的读取访问。
源的因素有很多种:域名与子域名、IP 地址、端口、协议。
src
属性资源文件的加载:
需要注意的是,存放
JS
文件的域并不重要;重要的是JS
文件加载的域。在浏览器中
<script>
、<img>
、<iframe>
、<link>
等标签都可以被跨域加载资源,而不受同源策略的限制。这些带
src
属性的标签每次加载时,实际上是由浏览器发起了一次GET
请求。不同于
XMLHttpRequest
的是:通过src
属性加载的资源,浏览器限制了其权限(不能读写返回的内容)。
XMLHttpRequest
请求:
如果
XMLHttpRequest
能够跨域访问资源,则可能会导致一些敏感资源的泄露。比如:CSRF
的token
,从而导致发生安全问题。随着业务的发展,
W3C
委员会制定了XMLHttpRequest
跨域访问标准:它需要通过目标域返回的HTTP
头来授权是否允许跨域访问。安全性基于:因为
HTTP
请求头一般是无法被JS
控制的,所以认为这个方案是可以实施的。
对于浏览器来说,除了 DOM
、Cookie
、XMLHttpRequest
会受到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略。最常见的比如:Flash
、Java Applet
、Silverlight
、Google Gears
等都有自己同源策略。
浏览器沙箱
黑客圈子名词 挂马:
- 在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式。
浏览器的多进程架构,将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,也不会影响到其他的进程。
Google-Chrome
是第一个采取多进程架构的浏览器。它的主要进程分有:
- 浏览器进程、渲染进程、插件进程(如
pdf
、java
、flash
)、扩展进程。
沙箱的应用范围非常广泛。而对于浏览器来说,采用 SandBox
技术让不受信任的网页代码运行在一个受到限制的环境中,从而保护本地桌面系统的安全。
Google-Chrome
实现了一个相对完整的沙箱(官网):
恶意网址拦截
浏览器拦截恶意网址的功能都是基于 ”黑名单“ 的,如果用户上网时发信啊网址存在于黑名单中,浏览器会弹出一个 警告页面。
常见的恶意网址分为两类:
- 挂马网站,这些网站通常包含有恶意的脚本比如 Flash 或 JavaScript,通过利用浏览器的漏洞执行
shellcode
插入木马; - 钓鱼网站,通过模仿知名网站的相似页面来欺骗用户。
要识别恶意网站建立黑名单:
需要许多基于页面的特征,而这些模型显然是不适合放在客户端的。攻击者会分析研究并绕过这些规则,而且收集用户访问的历史纪录也是一种侵犯隐私的行为。
一些有实力的浏览器厂商会自建有安全团队对恶意网址进行识别,这份黑名单对于搜索引擎来说也是其核心竞争力之一。
PhishTank
是互联网上免费的提供恶意网址黑名单的组织之一,它由世界各地的志愿者提供。Google
也公开了SafeBrowsing API
,任何组织或个人都可以在产品中接入。
除此之外,EV SSL
证书(Extended Validation SSL Certificate)可以进行白名单标识。