前端安全之CSRF

 一、跨站点请求伪造(CSRF)

      什么是csrf呢?

借助用户的身份去做有损用户利益(一些事情)的事情。

怎么实现跨站点请求伪造呢?

1、伪造者通过创造一个带有<a href="">或<img src="">标签地址指向伪造者创建的url的网页

比如:

<a href="http://bank.com/transfer.do?acct=MARIA&amount=100000">查看我的图片!</a>
<img src =“http://bank.com/transfer.do?acct=MARIA&amount=100000”width =“0”height =“0”border =“0”>

2、伪造者通过创造一个带有form表单的网页

<form action =“<nowiki> http://bank.com/transfer.do </ nowiki>”method =“POST”>
<input type =“hidden”name =“acct”value =“MARIA”/>
<input type =“hidden”name =“amount”value =“100000”/>
<input type =“submit”value =“查看我的图片”/>
</form>  

如果某个网站有漏洞,伪造者就可以编写一个带有直接跳转这个网站的某个操作的链接的页面,用户点击伪造者创建的这个页面的url,就会执行伪造者想让用户执行的操作。假如这是一个有转账操作的网站,某个用户有在这个网站登录过,并且没有注销登录状态,用户身份一直可以被拿到,用户点击伪造者伪造的转账url,转账账户是伪造者的账户,用户就会将钱转给伪造者。

网站如何防止csrf攻击?

       1、网站添加用户确认操作:

比如请求之前添加用户输入验证码、或是第二次确认密码、邮箱验证等功能

2、服务端随机产生token,验证token

进入页面,服务端随机生成一个token,然后存在session中,请求的时候服务端验证请求中的token是否与服务器存储的一致。

3、验证请求的来源,http referer字段

伪造者给的链接,这里是个模拟转账的链接,已经做了referer判断

总结:

所以我们不要随便去浏览一些不安全的网站,更不要在不安全的网站上去注册/登录自己的信息,谨慎在未知安全的网站去注册自己的信息,特别是涉及

到转账支付的网站,如果登录这样的网站,且没有主动去退出登录,破坏者就有机会利用这些不安全的网站的漏洞,利用你的身份去做一些损害你的利益

的事情,比如诱导你点击某个链接或按钮然后就执行不安全网站上的某个转账操作 。

我们常见的在网页上执行某个操作之前,被要求输入二维码、二次确认密码等都是为了防止攻击者借着用户的身份对网页去直接进行某个操作,在某些具有

重要的操作的网页,也可以利用服务器随机生成token的方式,去确认在执行重要操作时是可信任的用户在真正做执行操作,或是服务器通过判断请求的来源http中

的referer字段,确保执行操作的真实性。

参考资料:

学习node开发、部署服务:

https://github.com/nswbmw/N-blog/blob/master/book/4.15%20%E9%83%A8%E7%BD%B2.md#4151-%E7%94%B3%E8%AF%B7-mlab

跨站请求伪造crsf:

https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

很容易懂的crsf讲解:

https://cloud.tencent.com/developer/article/1004943

上一篇:C++ 约瑟夫环问题


下一篇:二、springboot使用jpa