CSRF跨站请求伪造(基础)

CSRF跨站请求伪造:

介绍:CSRF,全称Cross-Site Request Forgery,跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

CSRF整个攻击过程实例:

1、受害者登录银行网站,通过身份验证,在本机生成Cookie

2、受害者单击了含恶意代码的链接,或者直接访问了第三方网站evil.com,并浏览带有下面HTML代码的网页:
    <img src=http://www.evil.com/transfer.php?toBankId=9999&money=100>

3、恶意代码利用受害者的身份发送一个请求,执行CSRF

4、受害者会发现自己的银行账户少了100元。

(在整个攻击过程中,交易是以受害者的身份发起的)

csrf攻击示例:

CSRF攻击(一):

在修改密码页面,可以看到,用户的修改后密码和确认密码都是在URL里明文发送的

http://localhost/csrf/login/changepassword.php?pass_new=123456&pass_conf=123456

在用户登录成功以后,可以诱使用户点击类似的连接,把密码改为攻击者想要的密码。即可修改密码成功。
CSRF攻击(二)

这个链接过于明显,在真正攻击场景下,可以对链接做一些处理。

可以使用短链接来隐藏URL(短网址服务可以把过长的网址压缩,点击短链接,会自动跳转到真实网站)

http://dwz.cn/

http://sina.lt/
CSRF攻击(三)

构造攻击页面,这种方法需要事先在公网上传一个攻击页面,诱骗受害者去访问,真正能够在受害者不知情的情况下完成CSRF攻击。test.html的具体代码:

<img src="http://localhost/csrf/login/changepassword.php?pass_new=123456&pass_conf=123456" border="0" style="display:none;"/>
<h1>404<h1>   
<h2>file not found.<h2>

(当受害者访问test.html时,会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为了hack。)

CSRF检测:

方法:验证pro(验证程序)是否被服务器执行

CSRF攻击防范:

1)使用POST提交用户数据,来代替GET

2)校验HTTP Referer:

HTTP头的Referer字段记录了HTTP请求的来源地址,通过检查来源地址是来自站内还是来自远程的恶意页面,能够解决从站外发起的CSRF攻击,同时解决非法盗链,站外提交等问题。但是Referer字段可以被修改或伪造

3)使用验证码(二次确认):每次用户提交内容时,都要求其在表单中填写图片上的随机验证码,并且在提交表单后对齐进行检测

4)使用请求令牌Token:在HTTP请求中以参数的形式加如一个随机产生的请求令牌,并在服务器端对其进行验证。如果请求中没有Token或者Token的内容不正确,则认为可能是CSRF攻击而拒绝该请求。
发布了39 篇原创文章 · 获赞 1 · 访问量 1139

猜你喜欢

转载自blog.csdn.net/qq_39421693/article/details/104657492