【发布时间】:2011-11-23 06:37:02
【问题描述】:
我正在使用w3af 审核我的网站。
它说它在我的网站上发现了几个问题,但我怀疑情况是否真的如此。
其中一个问题是:
URL:http://localhost/en/login 容易受到跨站请求伪造的攻击。它允许攻击者在向服务器发送数据时将方法从 POST 转换为 GET。
我很确定它不容易受到 csrf 攻击,因为我在表单中使用了 crsf 保护(带有被检查的令牌的字段)。
所以我想知道这条消息是关于什么的:
它允许攻击者在向服务器发送数据时将方法从 POST 转换为 GET。
我不在乎攻击者是否能够从POST 切换到GET,还是我可以?
如果我这样做,你能解释一下我为什么这样做吗?如何利用它?
【问题讨论】:
-
您是否在该表单中使用 $_REQUEST,而不是 _POST?
-
@MarcB:是的,我是。但我不明白这将如何被利用(考虑到 csrf 预防领域)。
-
@Macmade:你能解释一下我为什么关心它吗?
-
@peehaa:攻击允许 GET 输入的登录表单要容易得多。考虑一下有人发布了一个恶意的 FB 应用程序,该应用程序承诺 meme-du-jour 并输入
<img src="yoursite.com/login.php?user=xxx&password=yyy">你会让整个 FB 潮流都撞上你的前门。 -
为了完美,您可以返回 403 Forbidden 用于 CSRF 检测或 401 Unauthorized 用于登录质询响应。响应主体仍然可以是用户友好的。例如。 CSRF 响应可以解释该请求看起来是不请自来的(我们系统的 CSRF 响应是一个表单字段验证组件,因此所有表单字段都保留供用户查看),并且 401 响应应该是登录表单。在检查 HTTP 日志文件时,使用清晰的状态代码和结构良好、有意义的 URL 有很大帮助。