2019独角兽企业重金招聘Python工程师标准>>>
【第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攻防的主战场,很可能会发生在移动互联网上。