CSRF(cross-site request forgery)跨站请示伪造,是一种对网站的恶意利用,与XSS不同,XSS利用的是站点内的信任用户,而CSRF则通过伪装来自受信任用户的请示来利用受信任的网站。
攻击方式
GET类型的CSRF
GET类型的CSRF利用非常简单,只需要一个HTTP请求就可以了。一般会这样子来利用:
在访问有这个img tag的页面后,就会向test.me/cost.php发出参数uid为3的http get请求,就达到了攻击者的目的。 之前有爆出过某weibo的关注动作就是一个get请求,恶意用户通过私信的方式发送一个陌生url,用户点击后就会在不知情的情况下关注该恶意用户。1
<img src="http://test.me/cost.php?uid=3"/>
POST类型的CSRF
要利用post类型的csrf可以使用一个自动提交的表单。如下:
1 2 3 4 5 6
<form action="http://test.me/cost.php" method="post"> <input type="text" name="uid" value=3> </form> /<script> document.forms[0].submit(); </script>
防范方法
加入token
这是防范csrf攻击最常用的方式。比较通用的方式是保持原有的参数不变,另外添加一个参数token,这个值是随机的,服务端在接到请求后首先检查这个token是不是合法,如果不合法就返回错误,有效防止第三方攻击。 很常见的做法是将session_id md5之后做为token进行加密。 敏感操作都要使用post,防止token出现在url中
检测refer
通过检查refer值,我们可以看出这个请求是合法的还是非法的。但是服务器不是任何时候都能接受到referer的值。所以refer的检测用于监控csrf的发生。
本文标题:CSRF漏洞的攻击和防御
本文链接:https://blog.quwenai.cn/post/6.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...