素材巴巴 > 程序开发 >

CSRF(Cross-site request forgery)

程序开发 2023-09-23 12:17:55

CSRF

什么是CSRF

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

利用方法

index.jsp


 CSRF Test
 
 
请输入转账目标:请输入转账金额:

TransferServlet

@WebServlet("/Transfer")
 public class TransferServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String target = request.getParameter("target");String money = request.getParameter("money");PrintWriter writer = response.getWriter();writer.println("target:"+target+",money:"+money);}
 }
 

hack.html


 
 csrf hack
 
 

正常流程如下:
输入转账账户和金额进行转账
在这里插入图片描述
转账成功
在这里插入图片描述
但是如果直接访问工作者伪造的网址则直接转账成功![在这里插入图片描述](https://img-blog.csdnimg.cn/20181111100934684.png
通过以上例子,攻击者通过构造请求包,诱导用户点击导致直接转账成功。

这个例子中没有用到cookie判断用户身份,因为cookie对于csrf相当于不存在的,浏览器会自己提交cookie上去进行身份验证。我们登陆网站后,网站会给我们个cookie,当用户对网站进行操作的时候,浏览器会直接带上当前网站的cookie,但是如果该网站存在csrf,攻击者构造了请求,当你点击后,浏览器也会带上目标网站的cookie。

进阶

防御

想要防御csrf就要想办法让攻击者构造不了所有的参数。

  • 在请求地址中添加 token 并验证
  • 在 HTTP 头中自定义属性并验证

  • 标签:

    上一篇: javascript回到顶部 下一篇:
    素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。