http://segmentfault.com/a/1190000003852910?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
https://blog.wilddog.com/?p=210
一、什么是源
经常听到跨域,同源这样的概念。那这个源确切指的是什么呢
- 相同的HOST
- 相同的协议
- 相同的端口
举例如下:
https://www.baidu.com
和http://www.baidu.com
非同源,因为协议不同。
http://baidu.com
和http://www.baidu.com
非同源,因为域名不同。
http://baidu.com
和http://baidu.com:8080
非同源,因为端口不同。
二、同源策略
同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin)中资源的交互方式。简单的说就是一个源的页面上的js只能访问当前源的资源,不能访问其他源的资源。那么资源是什么呢?
曾经就掉进理解误区里,http://bawugonggonghoutai.sinaapp.com/listUserLog?word=%C6%BD%B6%A5%C9%BD%D1%A7%D4%BA 比如说这样一个页面,发现他加载了贴吧域名下的js和css,起初想不明白,看完下面的就明白了。
- DOM
- 通过ajax请求的网络资源
- cookie
- webstorage, websql
同源策略是浏览器安全策略的基础,但同源策略面对很多攻击是无能为力,比如XSS。
三、XSS
xss - 跨站脚本攻击 xss攻击方式:
- client - 客户端型
- server - 服务端型
无论是服务端型还是客户端型xss,攻击达成需要两个条件
- 代码被注入
- 代码被执行
宗旨:任何时候都不要把不受信任的数据直接插入到dom中的任何位置,一定要做转义。
待补充各类案例