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头,第三方cookie就能够跨域发送、设置了。
防御方法:
1、采用POST(屏蔽采用img、script等发起get请求攻击)
2、验证码、token等
3、refer检测(屏蔽请求来源url不是白名单的情况)
4、url参数扰乱(让攻击者猜不出请求参数)
最后,XSS和CSRF可以组合,通过XSS让任意站点成功CSRF攻击的发起站点,甚至让目标站点自身攻击自身。
实例:
XSRF攻击实例,注入cnodejs.org官网
关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
web安全小记(XSS、CSRF)
发表于2013年10月2日 09:51:48 更新于2013年10月9日 15:14:38
评论
暂无评论添加评论
分类
琐碎文字 As3&Flex RIA UG English CodingArt C++ PHP Webserver E音乐盒 Unity3d C# JS&Html5 Tools mobile golang 最近发表
- golang学习之函数/方法/接口(2022年1月6日 17:50:24)
- golang学习之零值(2022年1月6日 16:38:10)
- hello, 2018(2018年1月15日 22:47:25)
- 字体类型名词解释(2015年1月18日 11:29:14)
- 获取mysql表注释以及列注释(2014年11月13日 15:56:32)
- php连接ms sql数据库的一些问题(2014年9月15日 20:32:14)
- virtualbox虚拟网络:NAT&bridge桥接网络(2014年8月25日 22:51:35)
- php图片加水印(2014年8月15日 22:50:42)
- windows查看端口占用情况(2014年7月31日 21:19:30)
- android安卓activity生命周期(2014年7月12日 10:31:47)
最近回复