首页 > 代码库 > 《白帽子讲WEB安全》学习笔记之第4章 跨站点请求伪造(CSRF)

《白帽子讲WEB安全》学习笔记之第4章 跨站点请求伪造(CSRF)

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

4.1 CSRF简介

CSRFCross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。

4.2 CSRF进阶

浏览器所持有的Cookie分为两种:一种是“Sesion Cookie”,又称“临时Cookie”;另一种是“Third-party Cookie”,也称为“本地cookie”。两者的区别在于,Third-party Cookie是服务器在Set-Cookie时指定Expire时间,只是到了Expire时间后Cookie才会失效,所以这种Cookie才会保存在本地;Session Cookie则没有指定Expire时间,所以关闭浏览器,Session Cookie就会失效。

在浏览网站的过程中,若是一个网站设置了Session Cookie,那么在浏览器的进程的生命周期内,及时浏览器心打开一个Tab页面,SessionCookie也是有效的,SessionCookie保存在浏览器进程的内存空间中。

IE处于安全的考虑,默认禁止了浏览器在<img><iframe><scrtpt><link>等标签中发送第三方Cookie。而Firefox中,默认策略是允许发送第三方Cookie的。

 

P3P

P3P是一种被称为个人隐私安全平台项目(the Platform for Privacy Preferences)的标准,能够保护在线隐私权,使Internet冲浪者可以选择在浏览网页时,是否被第三方收集并利用自己的个人信息。如果一个站点不遵守P3P标准的话,那么有关它的Cookies将被自动拒绝,并且P3P还能够自动识破多种Cookies的嵌入方式。p3p是由全球资讯联盟网所开发的。

随着Internet的发展,电子商务发展势头也异常迅猛。这种新的贸易方式在带给人们难以想象的便利前提下,也给人们带来了以往现金交易模式下所没有的麻烦——通过网络泄露个人隐私数据。(Platform for Privacy Preferences)正是一种可以提供这种个人隐私保护策略,并且正在被越来越多的技术人员接受的新技术。

Java实现:在Response的响应头中加入

response.setHeader("P3P","CP=/"CURaADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSPCOR/"");

请注意不要滥用该P3P属性,以免带来安全隐患。

CSRF攻击成功的本质原因是重要操作的所有参数都是可以被攻击者猜测到了。

4.3 CSRF的防御

4.3.1 验证码

验证码是认为对抗CSRF攻击最简洁而有效的防御方法。但是考虑到用户的体验效果,最好是在重要的操作再使用验证码。

 

CSRF攻击多是通过构造URL进行攻击的,所以可以在URL请求中加入一些随机数或者混淆。

4.4 小结


本文出自 “梦朝思夕” 博客,请务必保留此出处http://qiangmzsx.blog.51cto.com/2052549/1859548

《白帽子讲WEB安全》学习笔记之第4章 跨站点请求伪造(CSRF)