当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《PHPF中的CSRF(跨站点请求伪造)攻击示例和预防》经验,为你挑选了3个好方法。

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

http://mysite.com/vote/25

这将对项目25进行投票.我想只为注册用户提供此选项,并且只有在他们想要这样做时才可以.现在我知道有人在网站上忙碌,有人给他们这样的链接:

http://mysite.com/vote/30

然后投票将是他在项目上的位置,而他不想这样做.

我已经阅读了OWASP网站上的解释,但我真的不明白

这是CSRF的一个例子,我该如何防止这种情况发生.我能想到的最好的事情就是像哈希一样在链接中添加一些内容.但是,在所有链接的末尾添加一些内容会非常恼人.没有其他方法可以做到这一点.

另一件事可能有人可能会给我一些其他的例子,因为该网站对我来说似乎是相当的神话.



1> Pascal MARTI..:

如果符合以下条件,这可能成为CSRF的一个例

获取该链接(例如通过标记):伪造

从另一个站点:跨站点


例如,如果我可以在stackoverflow的HTML源代码中注入此标记(我可以,因为stackoverflow允许在他的帖子中使用标记):


你只会投票支持该项目;-)


通常使用的解决方案是在URL中放置生命周期有限的令牌,并在获取URL时检查此令牌是否仍然有效.

基本想法是:

生成页面时:

生成一个唯一的令牌

将其存储在用户的会话中

并将其放在页面的链接 - 这将是这样的: http://mysite.com/vote/30?token=AZERTYUHQNWGST

调用投票页面时:

检查URL中是否存在令牌

检查它是否存在于用户的会话中

如果不=>不注册投票

这个想法是:

令牌没有很长的使用寿命,很难猜测

这意味着你的攻击者:

只有几分钟的窗口,在此期间他的注射将是有效的

必须善于猜测^^

必须为每个用户生成不同的页面.


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

但在这里,您必须在安全性和用户友好性之间做出选择......


另一个想法(那不是非常安全,但有助于反对家伙不知道如何强制POST请求),只会在人们投票时接受POST请求:

浏览器正在发送注入标签的GET请求

由于此URL正在修改某些数据,无论如何,它不应该与GET一起使用,而只能与POST一起使用

但请注意,这不是完全安全的:它可能(可能?)可能强制/伪造一个POST请求,有点Javascript.


对于修改服务器状态的操作,应始终需要POST请求,否则Web爬网程序,预爬行程序等.可能会触发状态变化
你是对的,它很容易伪造一个GET作为POST请求.虽然我不同意有必要让一个令牌过期.如果攻击者能够获取您的会话数据,则比一些额外的投票更麻烦.但是您的建议修复仍然有效,因为密钥只是在Cookie和请求数据中保存令牌/随机值(保存在cookie中或绑定到用户会话密钥).

2> MyGGaN..:

首先,不应该使用GET请求来改变服务器上的状态,因此对于您的投票服务,我建议使用POST/PUT.这只是一个指导方针,但却是一个切肉刀.

因此,对于您的问题,CSRF是一个客户端问题,因此您使用何种服务器语言并不重要(在您的情况下为PHP).标准修复是相同的,如下所示:在URI/POST数据中有一个随机值,在Cookie标头中有相同的值.如果这些匹配你可以确定没有CSRF.有关如何在StackOverflow上完成此操作的信息很多,例如.这个.
祝好运!



3> 小智..:

OWASP有一个用于PHP的CSRFGuard,以及我很久以前为XMB写的ESAPI for PHP - > UltimaBB - > GaiaBB.

http://code.google.com/p/gaiabb-olpc/source/search?q=function+get_new_token&origq=function+get_new_token&btnG=Search+Trunk

似乎其他一些人已经清理了该代码并允许更强的令牌:

https://www.owasp.org/index.php/PHP_CSRF_Guard

谢谢,安德鲁

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有