同源策略(Same-Origin Policy),就是为了保证互联网之中,各类资源的安全性而诞生的产物,它实际上是一个众多浏览器厂商共同遵守的约定。同源策略是浏览器中最基本的安全功能。缺少同源策略,很多浏览器的常规功能都会受到影响,可以说Web是构建在同源策略基础之上的。
如果Web世界没有同源策略,当你登录FreeBuf账号并打开另一个站点时,这个站点上的JavaScript可以跨域读取你的FreeBuf账号数据,这样的话整个WEB世界就没有 隐私而言。
浏览器的同源策略,限制了不同源的“document”或是脚本,对当前“document”或资源及其属性的读写权限。
同源策略是一种安全思想,但并不是统一的规范体系。不同语言脚本以及插件,它们的同源策略规则也不尽相同,不可一概而论。
javaScript中的同源,需要对比 两者中的协议、域名、端口。三者完全相同才认为是同源的,否则即是来自不同源的内容。
在HTML语言中,有部分标签在引用第三方资源时,不受同源策略的限制:
上述这种带src属性的标签,在加载时,实际是生成一条GET请求,向指定服务器申请资源。
跨站脚本攻击(Cross Site Scripting)的缩写,为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS的原理
用户提交的数据没有过滤,或者过滤不严格,输出到网页中 ,导致可以构造执行JS代码,或者修改网页内容。
XSS的危害
XSS没有危害,很少有人去关注它。对于那些半年没有更新的小企业网站来说,发生XSS漏洞几乎没有什么用。但是在各类的社交平台,邮件系统,开源流行的Web应用,BBS,微博等场景中,造成的杀伤力却十分强大。
XSS的危害
XSS的分类
反射型XSS又称为非持久型XSS。XSS代码出现在URL参数或者请求中,浏览器发出请求时,参数值作为输入提交到服务器,服
务器接受处理后参数值出现在响应的HTML中,最后浏览器解析执行了这段XSS代码。
反射型XSS利用过程
存储型XSS,又称持久型XSS,他和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中。
DOM XSS与反射型XSS和存储型XSS的差别是在于DOM XSS的代码不需要服务器解析响应的直接参与,触发XSS靠的是浏览器DOM解析器的解析,可以完全认为是客户端的事情。
利用的是网页上flash文件缺陷来执行js脚本,一般是反射型xss
XSS手动挖掘
输出点位置
输出在标签外
需要可以构造标签,如果不能构造标签就不存在XSS漏洞。
输出到标签中
如果输出在"双引号或者’单引号内部,需要能够闭合引号,如果不能闭合引号,就需要看能否在当前的标签属性中执行js代码,如果不能,就不存在XSS漏洞。
如果没有输出在"双引号或者’单引号内部,或者可以闭合引号,可以构造一个新的属性,使用新的属性的值来执行JS代码,比如事件属性。
输出到Script标签中