当前位置: 代码迷 >> 综合 >> java web 安全防护1-CSRF(Cross-site request forgery 跨站请求伪造)
  详细解决方案

java web 安全防护1-CSRF(Cross-site request forgery 跨站请求伪造)

热度:47   发布时间:2023-12-08 03:47:54.0

参考https://www.aliyun.com/zixun/wenji/1280636.html

参考https://www.cnblogs.com/suizhikuo/p/4545981.html

这两篇文章 很全。介绍了CSRF的概念。这里即不赘述了。

这里截取了主要的概要说明,很生动的介绍了CSRF:

{

CSRF(Cross-site request forgery 跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

攻击通过在授权用户访问的页面中包含链接或者脚本的 方式工作。例如:一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并且后者刚刚发布了一个具有Bob银行链接的图片消 息。设想一下,Alice编写了一个在Bob的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果Bob的银行在cookie中保 存他的授权信息,并且此cookie没有过期,那么当Bob的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经Bob同意的情况下便授权了这次事务。

CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。在上面银行示例中的代理人是Bob的web浏览器,它被混淆后误将Bob的授权直接交给了Alice使用。

下面是CSRF的常见特性:

  • 依靠用户标识危害网站
  • 利用网站对用户标识的信任
  • 欺骗用户的浏览器发送HTTP请求给目标站点
  • 另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。

风险在于那些通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用。已经通过被保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送HTTP请求到那个信任他的站点,进而进行用户不愿做的行为。

使用图片的CSRF攻击常常出现在网络论坛中,因为那里允许用户发布图片而不能使用JavaScript。

 

}

 

目前可以接受的方案:登录时动态为每个会话生成token,记录在服务器的session中,然后之后其他访问的页面中将需要CSRF防护的请求中,在页面ajax访问服务器前加入token值,这样服务器就可以校验token和session的的token是否匹配,即可。

 

 

  相关解决方案