浅析浏览器同源策略

浏览器安全以同源策略为基础,理解同源策略才能把握客户端安全本质

web是建立在同源策略之上的,浏览器只是针对同源策略的一种实现

同源策略

  浏览器的同源策略,限制了来自不同源的“document”和脚本

  判断资源是否同源,以下情况认为同源、非同源:

URL outcome reason
http://store.company.com/dir/a.html 同源  
http://store.company.com/dir/b.html 同源  
http://store.company.com:8080/dir/a.html 端口号
https://store.company.com/dir/a.html 协议
http://news.company.com/dir/a.html 域名(ip)

  影响“源”的因素:host(域名、IP),端口,协议

  特别注意:

  在a.com中执行如下代码

<script src="http://b.com/b.js"></script>

  试问,b.js的源是谁?答案是a.com

  虽然从b.com中加载了b.js,但是b.js是在a.com中运行的,因此对当前打开的界面(a.com),b.js的源是a.com

带src属性的标签的同源策略

  <script>、<img>、<iframe>、<link>等标签带有src属性,可以跨域加载资源,不受同源策略限制

  这些标签加载时,实际上是浏览器发起了一个GET请求

  不同于XMLHttpRequest,通过src加载资源的标签,浏览器限制了JavaScript的权限,使其不能读、写返回的内容

  比如,通过CDN加载jQuery,就无法读写其返回的内容

XMLHttpRequest对象的同源策略

  XMLHttpRequest对象不能跨域访问资源,因此在ajax开发中要注意跨域问题

  但是近年W3C制定了XMLHttpRequest对象跨域访问的标准:

    通过目标域返回的HTTP头来授权是否允许跨域访问【这个跨域访问方案的基础是:JavaScript无法控制HTTP头】

        

浏览器沙箱模型(SandBox)

  “挂马” :在网页中插入一段恶意代码,利用浏览器漏洞执行代码的攻击方式

  Chrome是第一个采取多进程架构的浏览器(不是多线程,是多进程);多进程架构讲浏览器各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,不会影响到其他的进程

  Chrome主要进程分为:浏览器进程,渲染进程,插件进程,扩展进程。插件进程如:flash,java,pdf等与浏览器进程严格隔离

  SandBox 即沙箱,SandBox泛指“资源隔离模块”

恶意网址拦截

  工作原理:浏览器周期性的从服务器端获取一份最新的恶意网址的黑名单,如果用户上网的网址在此名单中,浏览器给出警告

  恶意网站分类:

  • 挂马网站 ,网页中包含的恶意脚本对用户进行攻击
  • 钓鱼网站, 模仿知名网站界面

  PhishTank 是免费提供恶意网址黑名单的组织,名单由各地志愿者提供,更新频繁

 

 

原文地址:https://www.cnblogs.com/RocketV2/p/5796595.html