浏览器的同源策略

同源策略

同源策略是一个重要的安全策略,它用于限制同一个 origin 的文档或者它加载的脚本如何能与另一个源的资源进行交互,它能帮助阻隔恶意文档,减少可能被攻击的媒介

 

Origin 源

源的组合

  • 协议(http、https)
  • 域(myapp.com、localhost、localhost.tiangolo.com)
  • 端口(80、443、8080)
https://www.cnblogs.com

 

不同的源的写法

  • http://localhost
  • https://localhost
  • http://localhost:8080

即使它们都是 localhost,但它们使用不同的协议或端口,因此它们是不同的 Origin 源

 

再来一个栗子

下表给出了与 URL http://store.company.com/dir/page.html  的源进行对比的示例

URL 结果 原因
http://store.company.com/dir2/other.html 同源 只有路径不同
http://store.company.com/dir/inner/another.html 同源 只有路径不同
https://store.company.com/secure.html 失败 协议不同
http://store.company.com:81/dir/etc.html 失败 端口不同 ( http:// 默认端口是80)
http://news.company.com/dir/other.html 失败 主机不同

 

源的修改

  • 满足某些限制条件的情况下,页面是可以修改它的源
  • 可以通过 document.domain 的值设置为其当前域或其当前域的父域
  • 如果将其设置为其当前域的父域,则父域将用于后续同源检查

比如我的博客地址 https://www.cnblogs.com/poloyy/ 

在 F12 Console 中敲

document.domain

 

会得到

'www.cnblogs.com'

浏览器的同源策略

 

改变源

document.domain = "cnblogs.com"

改成当前域的父域了

这个页面将会成功地通过与 http://cnblogs.com/dir/page.html 的同源检查

浏览器的同源策略

 

但是不能将 cnblogs.com 改成 cnblogscool.com ,因为它不是 cnblogs.com 的父域

浏览器的同源策略

 

上一篇:Web安全实验二


下一篇:IDEA中文乱码