1.主动攻击与被动攻击跨域
主动攻击:攻击者直接攻击Web服务器,SQL注入攻击。浏览器
被动攻击:攻击者并不直接攻击服务器,而是针对网站的用户设下陷阱,利用掉入陷阱的用户来攻击应用程序。安全
单纯的被动攻击——将用户诱导至设有圈套的网站,利用浏览器、Adobe Reader、Adobe Flash Player、JRE等插件的漏洞。服务器
恶意利用正规网站进行的被动攻击——经过在正规网站设置陷阱来实施攻击。cookie
在正规网站中设置陷阱的方式:网络
非法获取FTP等服务器的密码后篡改网站内容;性能
攻击WEB服务器的安全隐患来篡改网站内容;网站
经过SQL注入攻击篡改网站内容;插件
在用户可以本身发布内容的网站上,利用跨站脚本实施攻击。orm
跨站被动攻击——同时使用恶意网站和正规网站的被动攻击模式。
2.浏览器的安全功能
沙盒,JavaScript、Java Applet、Adobe Flash Player使用的一种策略。
同源策略,禁止JavaScript进行跨站访问的安全策略,浏览器的沙盒环境所提供的一项制约。
注意:若是主机相同,在iframe的外部就可以经过JavaScript取得iframe内部的HTML内容。若是恶意网站能用JavaScript访问iframe内部信息,那么我的信息会被恶意网站上的脚本发送给他的服务器。
同源的条件:
URL的主机(全称域名)一致;
Scheme(协议)一致;
端口号一致。
注意:发送cookie时的条件与协议或端口号无关,针对JavaScript的限制比较严格,JavaScript没有访问目录的权限。
3.应用程序安全隐患与被动攻击
使用iframe外层的JavaScript访问内层(其余主机)数据时因为违反同源策略,访问会被拒绝。
可是,可使用XSS等手段将JavaScript放到iframe的内层去执行。因为在iframe内层不会受到同源策略的限制,所以可以成功访问文档信息。
第三方JavaScript:
网站运营者执行所信任的第三方JavaScript;
网页浏览者信任第三方而向网页中嵌入JavaScript。(火狐的插件Greasemonkey)
4.JavaScript之外的跨域访问
可以进行跨域访问的其余浏览器功能:
frame元素和iframe元素——iframe元素和frame元素可以进行跨域访问,但经过JavaScript却不能跨域访问iframe中的文档内容。
X-FRAME-OPTIONS:制定了DENY的响应将不能显示在frame等的内层中,而SAMEORIGIN的状况下则仅当与地址栏上显示的域名为同源时才可以被显示。
将不使用iframe或framed额网站指定为DENY,使用frame而且使用单一主机的网站指定为SAMEORIGIN,能够更好地防护利用frame执行的各类攻击。
img元素——src属性可以制定其余域名,请求图像时会附带图像所在主机的cookie,可以让恶意网站上的图像显示为“此图像须要认证”。
若是不想让本身的图像被贴到某些特定网站,则能够针对图像j检验Referer消息头。这样会使关闭了Referer的用户没法看到图像。
script元素——指定src属性可以从其余网站来读取JavaScript。
假设A网站读取B网站的JavaScript:
JavaScrip的源代码位于B网站的服务器中,可是被读取后,做用范围就变成了读取它的HTML所在的A网站。因此JavaScript执行document.cookie后获得的即是A网站上的cookie信息。
A网站向B网站发送取得JavaScript的请求时,也会同时向B网站发送cookie。根据用户在B网站的登陆状态,B网站的JavaScript代码有可能会发生变化,从而影响A网站中的内容。
JSONP是从Ajax应用来访问不一样来源的服务器中的数据时所采起的一种方式,根据认证状态的不一样,JavaScript代码(JSONP中的数据)会发生变化,可能会致使信息泄露事故,因此JSONP不能用于传送隐私信息。
CSS——可以被跨域读取,除了HTML的link元素以外,也能在CSS中使用@import,使用JavaScriptd额addImport方法。
在老版本的IE中,存在CSSXSS安全隐患,使HTML或JS被当作CSS读取。
form元素的action属性——action属性也可以跨域指定,不管action的目标是否跨域,form的提交都能经过JavaScript来操做。
恶意利用form元素的特性来实施攻击的方式称为跨站请求伪造(CSRF),让用户在不知情的状况下提交form,从而肆意使用应用中的功能。
总结:JavaScript的同源策略是浏览器防护被动攻击的表明性对策。若浏览器或Web应用中存在安全隐患,攻击者可绕过同源策略而执行攻击。