当前位置: 首页 > 面试题库 >

PHP中的CSRF(跨站点请求伪造)攻击示例和预防

姚星腾
2023-03-14
问题内容

我有一个网站,人们可以像这样投票:

http://mysite.com/vote/25

这将对项目25进行投票。我只想让已注册的用户可以使用此功能,并且仅当他们想要这样做时才可以使用。现在我知道有人在网站上忙碌时,有人给他们这样的链接:

http://mysite.com/vote/30

那么投票将成为他不希望这样做的地方。

我已经在OWASP网站上阅读了说明,但是我不太理解

这是CSRF的示例,如何防止这种情况发生?我能想到的最好的事情就是在链接中添加一些内容,例如哈希。但是,在所有链接的末尾放置一些内容将非常令人讨厌。有没有其他方法可以做到这一点。

有人可能会给我另一个例子,因为这个网站对我来说似乎很陌生。


问题答案:

如果满足以下条件,这可能成为CSRF的示例:

  • 该链接已获取 <img>例如,通过标签):伪造
  • 来自另一个站点:跨站点

例如,如果我可以将此<img>标签注入stackoverflow的HTML源代码中
(并且我可以,因为允许一个人<img>在他的帖子中使用标签)

<img src="http://mysite.com/vote/30" />

您只需为该项目投票;-)

通常使用的解决方案是将寿命有限的令牌放置在URL中,并在提取URL时检查此令牌是否仍然有效。

基本思想是:

  • 生成页面时:
    • 生成唯一令牌
    • 将其存储在用户的会话中
    • 并将其放在页面的链接中-看起来像这样: http://mysite.com/vote/30?token=AZERTYUHQNWGST
  • 调用投票页面时:
    • 检查令牌是否存在于URL中
    • 检查它是否存在于用户会话中
    • 如果不是=>不要注册投票

这里的想法是:

  • 代币寿命不长,很难猜测
  • 这意味着您的 攻击者
    • 只有几分钟的窗口,在此期间他的注射将有效
    • 将不得不善于猜测^^
    • 将必须为每个用户生成一个不同的页面。

另外,请注意,用户离开您的网站后,其会话保持活动状态的时间越短,访问该不良网站时该会话仍然有效的风险就越小。

但是在这里,您必须在安全性和用户友好性之间进行选择。

另一个想法 (虽然不是很安全,但是对伙计们的帮助不会知道如何强制执行POST请求) 是仅在人们投票时才接受POST请求:

  • 浏览器正在发送GEThtml" target="_blank">请求以插入标记
  • 无论如何,由于此网址正在修改某些数据,因此它不应与GET一起使用,而只能与POST一起使用

但是请注意,这并不是绝对安全的 :(可能是?) 可以使用一些Javascript强制/伪造POST请求。



 类似资料:
  • CSRF攻击迫使经过身份验证的用户(受害者)发送伪造的HTTP请求,包括受害者的会话cookie到易受攻击的Web应用程序,这允许攻击者强制受害者的浏览器生成请求,以便易受攻击的应用程序感知来自受害者。 我们下面来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 任何人都可以将内容加载到用户的浏览器中,从而迫使他们向您的网站提交请求。 攻击者的方法 - 攻击者创建伪造

  • 本文向大家介绍Django中如何防范CSRF跨站点请求伪造攻击的实现,包括了Django中如何防范CSRF跨站点请求伪造攻击的实现的使用技巧和注意事项,需要的朋友参考一下 CSRF概念 CSRF跨站点请求伪造(Cross—Site Request Forgery)。 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发

  • 问题内容: 因此,我们的应用程序是: 每个用户都必须登录 登录页面回发到服务器,并且如果授权用户返回SPA应用程序。 SPA应用程序完全是AJAX HTTPS 通常我们会发送一个cookie和一个cookie。令牌cookie值将作为x- header包含在任何AJAX帖子中,并且每次请求都将在服务器上验证所有内容。 由于SPA页面是在返回浏览器之前构建的,因此我们可以在其中嵌入我们想要的任何内容

  • 我正在开发Web应用程序,并要求在发布之前对其运行。 然后我下载了Vega并快速扫描了我的webapp,发现了一个VAPT问题,如下所示: Vega检测到资源设置了不安全的跨源资源共享(CORS)访问控制。CORS提供了允许服务器将跨站点请求的资源访问限制到某些受信任域的机制。通过将“Access Control Allow origin”响应头的值设置为通配符值,所讨论的服务器已允许来自任何源的

  • CSRF Middleware(跨站请求伪造) CSRF(Cross-site request forgery 跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对

  • 综述 CSRF 是一种强制最终用户在web应用认证的情况下执行操作的攻击。通过一些社会工程学技巧的帮助(比如通过电子邮件或聊天工具发送链接),攻击者能够让用户执行攻击者想要的操作。当面向普通用户时,一次成功的CSRF利用可以获取用户的数据。如果面向的用户时管理员账户的话,CSRF攻击能够攻破整个web应用系统。 CSRF依赖于下面条件: Web浏览器支持会话相关的功能(如cookies和http认