白帽子讲Web安全2.pdf

XSS构造技巧html

利用字符编码:数据库

var redirectUrl="\";alert(/XSS/);";json

自己没有XSS漏洞,但因为返回页面是GBK/GB2312编码的“%c1\”成为了一个Unicode字符,忽略掉转义字符\跨域

%c1";alert(/XSS/);//浏览器

绕过长度限制:安全

不少时候产生XSS的地方会有变量长度限制,将代码藏在location.hash中,而后在其余地方调用便可服务器

http://www.a.com/test.html#alert(1)网络

<input type="text" value="" onclick="eval(location.hash.substr(1))"/>//去掉第一个字符#session

用户点击文本框时触发playload架构

某些环境下,能够利用注释符绕过长度限制

<input id=1 type="text" value=""/>

XXXXXXXXXXXXXX

<input id=2 type="text" value=""/>

第一个文本框输入"><!--

第二个文本框输入--><script>...</script>

将中间的代码注释掉

使用<base>标签:

它的做用是定义页面上的全部使用“相对路径”标签的hosting地址

好比<img src="/intl/en_ALL/logon.png"/>

能够设置

<base href="http://www.google.com"/>

在技术文档中,提到<base>标签只能用于<head>标签内,实际上<base>能够出如今页面的任何地方,并做用于该标签以后的全部标签,XSS能够劫持全部使用相对地址的标签

window.name:window.name对象是没有特殊字符的限制,因为window对象是浏览器的窗体,并不是document对象,不少时候window对象不受同源策略的限制,能够实现跨域、跨页面传递数据

在同一窗口www.a.com/test.html中为window.name赋值,跳转到www.b.com/test.html中后window.name的值依然是以前页面的赋值

能够eval(window.name)

以前讲的都是基于HTML的XSS攻击,在Flash中一样能够形成XSS攻击,ActionScript脚本很是强大灵活,甚至能够发起网络链接,在实现XSS Filter时,禁用<embed><object>等标签,若是必定要使用的话,能够将视频转码为flv文件,flv是静态文件,不会产生安全隐患,或者配置相关信息,禁止Flash与页面进行通讯

JavaScript框架也会存在一些XSS漏洞

XSS防护:浏览器禁止页面的JavaScript访问带有HttpOnly属性的Cookie;输入检查是否携带非法字符;输出检查,将字符编码和转义如<编码为&lt;

若是网站使用了MVC架构,那么XSS就发生在View层——在应用拼接变量到HTML页面时产生

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

CSRF全名是Cross Site Request Forgery,就是跨站点请求伪造

诱使用户访问一个页面(调用Cookie),就以该用户身份在第三方站点里执行了一次操做

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

Third-party Cookie是服务器在Set-Cookie时指定Expire时间,只有到了Expire时间后,Cookie才会失效(保存在本地),Session Cookie未指定Expire时间,浏览器关闭则失效(保持在浏览器进程的内存空间)

CSRF防护:

验证码

Referer Check最多见的应用是“防止图片盗链”,能够检查请求是否来自合法的“源”

CSRF的本质是攻击者能够猜想到重要操做的参数,若是参数进行加密或者使用随机数

第5章 点击劫持(ClickJacking)


点击劫持是一种视觉欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在网页上(控制iframe的长宽,调整top、left的位置,设置透明度为0)

一般能够写一段JavaScript代码,禁止iframe的嵌套,这种方法叫frame busting

if(top.location!=location){

top.location=self.location;  //防止当前页面被嵌套在其余iframe中

}

第6章 HTML5安全

HTML5为<iframe>标签订义了一个新属性sandbox,定义新属性以后<iframe>标签加载的内容将被视为一个独立的“源”(同源策略);

HTML5为<a>、<area>定义了一个新的Link Types:noreferrer

<a href="xxx" rel="noreferrer">test</a>  //再也不发送Referer,保护隐私信息

同源策略给Web开发者带来不少问题,由此诞生jsonp、iframe跨域等技巧

HTML5定制了新API:postMessage,它容许每个window(包括当前窗口、弹出窗口、iframes等)对象往其余窗口发送文本消息,实现跨窗口的消息传递,这个功能不受同源策略限制

在窗口的window对象上调用window.postMessage(document.getElementById("...").value);

另外一个窗口监听document.addEventListener("message",function(e){...},false);

Web Storage:

在Web Storage出现之前,浏览器里存储信息方式有Cookie(只包含基本信息)、Flash Shared Object(Adobe公司)、IE UserData(微软公司)

W3C委员会但愿在客户端有一个较为强大的本地存储功能,就是Web Storage,它分为Session Storage(关闭浏览器就会失效)和Local Storage(一直存在)

Web Storage就像一个非关系型数据库,由Key-Value对组成

window.sessionStorage.setItem(key,value);  //设置

window.sessionStorage.getItem(key);  //读取

Web Storage也受同源策略约束,每一个域所拥有的信息只会保存在本身的域下,其余域访问获得null

相关文章
相关标签/搜索