读《白帽子讲Web安全》之客户端脚本安全(一)

原创
2014/09/05 20:01
阅读数 420

【第2章  浏览器安全】

1、同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能。

浏览器的同源策略,限制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性

2、比如JS,来自不同协议、端口、子域名等是不同源的。host指的是域名或者IP地址。

需要注意,对于当前页面来说,页面存放JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么。

3、在浏览器中,<script>、<img>、<iframe>、<link>等标签都可以跨域加载资源而不受同源策略的限制。但是<script>等标签仅能加载资源,而不能读、写资源的内容。

4、挂马:在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式,在黑客圈子里形象地成为“挂马”。

5、浏览器的多进程架构,将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,也不会影响到其他的进程。

Google Chrome是第一个采取多进程架构的浏览器,它的主要进程分为:浏览器进程、渲染进程、插件进程、扩展进程。插件进程如Flash、java、pdf等与浏览器进程严格隔离,因此不会互相影响。

渲染引擎由Sandbox隔离,网页代码要与浏览器内核进程通信、与操作系统通信都需要通过IPC channel,在其中会进行一些安全检查。

6、Sandbox即沙箱,计算机技术发展到今天,Sandbox已经成为泛指“资源隔离类模块”的代名词。Sandbox的设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性。

7、恶意网址分为2类:挂马网站、钓鱼网站

8、提供恶意网址黑名单的机构:

1)PhishTank是互联网上免费提供恶意网址黑名单的机构之一,它的黑名单由世界各地志愿者提供,且更新频繁。

2)Google也公开了其内部使用的SafeBrowsingAPI,以获取Google的恶意网址库。

【第3章  跨站脚本攻击(XSS)】

详情见“读《白帽子讲Web安全》之客户端脚本安全(一)”

【第4章 跨站点请求伪造(CSRF)】

0、CSRF的本质:CSRF为什么能够攻击成功?其本质原因是重要操作的所有参数都是可以被攻击者猜测到的

1、CSRF的全名是Cross Site Request Forgery

2、请求时攻击者伪造的,比如想删除A在sohu上的博客,一般博主登陆后sohu博客后,再请求url:http://blog.sohu.com/manage/entry.do?m=delete&id=12345 ,就能把编号为“12345”的博客删除。攻击者就在自己的域http://www.a.com/csrf.html 构造一个页面,里边一个img标签是请求url的内容,然后引诱博主去电子自己的页面,然后就能删除那个帖子了。

上述攻击者伪造的请求之所以能够被搜狐服务器验证通过,是因为用户的浏览器成功发送了Cookie的缘故。

注意XSS的区别:XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

3、浏览器所持有的Cookie分为两种:一种是“Session Cookie”,又称“临时Cookie”;另一种是“Third-party Cookie”,也称为“本地Cookie”。

两者区别:“Third-party Cookie”是服务器在Set-Cookie时指定的 Expire 时间,只有到了Expire 时间后Cookie才会失效,所以这种Cookie会保存在本地; 而Session Cookie则没有指定Expire 时间,所以浏览器关闭后,“Session Cookie”就失效了。

“Session Cookie”保存在浏览器进程的内存空间中,而“Third-party Cookie”则保存在本地。

在浏览网站的过程中,若是一个网站设置了Session Cookie,那么在浏览器进程的生命周期内,即使浏览器新开了Tab页,Session Cookie也都是有效的(应该是同域)。

如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全原因,某些浏览器会阻止“Third-party Cookie”的发送。

4、P3P Header 是W3C制定的一项关于隐私的标准,全称是 The Platfrom for Privacy Preferences.

如果网站返回给浏览器的HTTP头中包含有P3P头,则在某种程度上来说,将允许浏览器发送第三方Cookie。在IE下即使是<iframe>、<script>等变迁也将不再拦截第三方Cookie的发送。

在网站的业务中,P3P头主要用于类似广告灯需要跨域访问的页面。但是遗憾的是P3P头设置以后,对于Cookie的影响将扩大到整个域中的所有页面,因为Cookie是以域和path为单位的,但这并不符合“最小权限”原则。

5、CSRF 的GET、Post都有利用的可能。

6、CSRF蠕虫。

7、CSRF的防御。

1)验证码:强制用户必须与应用进行交互,避免在用户不知情的情况下构造网络请求。

2)Referer Check:这个缺陷在于,服务器并非什么时候都能读取到Referer。

3)Anti CSRF Token:

在URL中,保持原参数不变,新增一个参数Token。这个Token值是随机的,不可预测。

Token的生成算法要足够安全,然后Token应该作为一个“秘密”,为用户与服务器所共同持有,不能被第三方知晓。在实际应用时,Token可以放在用户的Session中,或者浏览器的Cookie中。

【第5章 点击劫持 ClickJacking】

定义:点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

最简单的就是,有的网站,一点击就开始跳转到广告页。

在CSRF中,如果出现用户交互的页面,则攻击可能会无法顺利完成。与之相反的是,点击劫持没有这个顾虑,它利用的就是与用户产生交互的页面。

1、分类

Flash点击劫持

图片覆盖攻击

拖曳劫持与数据窃取

ClickJacking3.0:触屏劫持,比如智能手机上

2、防御方法

1)frame Busting

就是写一段JS代码,禁止iframe的嵌套。

2)X-Frame-Options

加一个HTTP头,有3个可选值,值不同,浏览器对加载frame页面的策略不同。

【第6章 HTML5安全】

1、新标签的XSS可能:比如<video>

2、iframe的sandbox属性

3、<a>和<area>标签定义了一个新的Link Types:noreferrer

4、canvas的妙用

5、浏览器实现的同源策略(Same Origin Policy)限制了脚本的跨域请求。但互联网的发展趋势是越来越开放的,因此跨域访问的请求也变得越来越迫切。同源策略给Web开发者带来了很多困扰,他们不得不想方设法地实现一些“合法”的跨域技术,因此诞生了jsonp、iframe跨域等技巧。

6、postMessage 跨窗口传递消息

postMessage允许每一个window(包括当前窗口、弹出窗口、iframe等)对象往其他的窗口发送文本消息,从而实现跨窗口的消息传递。这个功能是不受同源策略限制的。

7、WebStorage

对于HTML5来说,在移动互联网上的普及进程也许会更快,因此未来HTML5攻防的主战场,很可能会发生在移动互联网上。


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部