两个url 的协议、域名、端口(如果有指定的话)相同的情况下,称为同源。
同源策略控制不同源之间的交互,如在使用 xhr 和 img 时会受到同源策略的约束,一般允许跨域写操作和跨域资源嵌入,一般不允许跨域读操作,可以通过内嵌脚本的方式实现。
可能嵌入跨源资源的实例
- script标签中嵌入跨域脚本,语法错误信息只能被同源脚本中捕捉到
- link标签嵌入css,css跨域需要设置正确的http头部content-type
- img/video/audio 标签
- object/embed/applet嵌入的插件
- @font-face 引入的跨域字体,一些浏览器允许跨域字体,一些需要同源字体
- 通过 iframe 载入的资源,站点可以通过 X-Frame-Options 消息头阻止这种跨域形式的交互
阻止跨域写操作,只要检测请求中的一个不可推测的标记 CSRF token即可,可以使用这个标记阻止页面的跨站读操作
如果没有浏览器的同源策略
- 情况1,没有dom同源策略,做一个假页面嵌入银行网站,用户输入的用户名和密码可以直接获取
- 情况2,跨站请求伪造,危险网站中,携带已经登录的用户的cookie向银行网站发起请求,银行页面验证用户无误,会返回数据。
网友评论