web安全小记(XSS、CSRF)
sshong 发表于2013年10月2日 09:51:48 更新于2013年10月9日 15:14:38
1、XSS(Cross Site Script),即跨站脚本攻击,主要是在html页面中通过某种手段注入了js代码,而导致所有访问该页面的用户都会执行这段脚本。
譬如在提交评论时、在配置个人主页时插入特定代码,远程发送document.cookie等。

防御方法:cookie加httponly,encode用户输入的内容(转义<>等字符),尽量不要讲用户的内容作为html源码的一部分输出

2、XST(Cross Site Tracing),即跨站脚本攻击+http的trace方法。当cookie加入了httponly后,直接用js获取不到document.cookie。不过http有一个trace方法,其本意是用于调试,将最终到达服务器的http请求数据原封不动的返回给客户端,客户端可以查看请求数据在网络传输过程中是否有改动,而与原始请求有区别。黑客们用js发起一个trace请求到目标网站,这样http only的cookie也会发送并且原封不动的返回回来,这样也就获取到了httponly的cookie了。

防御方法:关闭trace方法,如apache config中加入TraceEnable off。


3、CSRF(Cross Site Request Forgery):跨站点请求伪造,在攻击者自身的站点上通过插入iframe、img等标签link到目标站点的特定url达到攻击目的。
譬如诱使用户登录目标网站,然后在攻击者站点上诱使用户打开某些网页,这些网页中有link、图片等发起特定请求(如删除日志、发送留言等)到目标站点实施攻击。

CSRF中的几个名词:
session cookie:关闭浏览器就失效的cookie
third-party cookie:会在客户端存储到某个指定时间的cookie
有些浏览器在跨域访问时,譬如img、script、iframe等链接到外部网站时,会只发送third-party的cookie到外部网站,如IE、Safari,同时这些外部网站返回的cookie也无法设置成功。
P3P头:会改变上述的这种安全策略。对于需要跨域访问的页面(如广告),需要保证third-party的cookie能够正确发送以及设置,所以都会有P3P头。
p3p
一旦设置了P3P头,第三方cookie就能够跨域发送、设置了。

防御方法:
1、采用POST(屏蔽采用img、script等发起get请求攻击)
2、验证码、token等
3、refer检测(屏蔽请求来源url不是白名单的情况)
4、url参数扰乱(让攻击者猜不出请求参数)


最后,XSS和CSRF可以组合,通过XSS让任意站点成功CSRF攻击的发起站点,甚至让目标站点自身攻击自身。

实例:
XSRF攻击实例,注入cnodejs.org官网
关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
标签:无分类:JS&Html5阅读:3586
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅