1

我有一个我正在用带有 cancan 和设计的 rails 3 编写的应用程序。我很好奇从安全的角度来看,授权控制器上的发布操作是否必要或有帮助?假设我的所有控制器操作都需要通过设计进行身份验证(即用户必须登录)。

我可以看到为什么我需要通过 cancan 对使用 GET 的控制器操作进行授权,因为用户可以简单地输入他们希望自由访问的 url,并且必须将其锁定。但是,对于帖子,用户必须从表单中发布数据,该表单可以防止使用令牌进行 xss 攻击。

在这种情况下,假设如果我使用 cancan 限制我视图中的按钮的可见性,用户将无法恶意提交表单,是否可以安全地假设?

非常感谢

编辑:

谢谢你们的快速回答。正如下面已经指出的那样,恶意用户可以使用诸如 firebug 之类的工具伪造表单帖子,因此需要授权。

使用 capybara / cucumber 模拟这种类型的交互(用户使用他们已经破解的表单发布到 url)的最佳方法是什么?

再次感谢。

4

3 回答 3

2

无论用户是否在您的网站上,用户都可以提交 POST 请求。您认为安全令牌将有助于防止 XSS 是正确的,但我会为其他攻击方法添加身份验证。

如果您担心安全性,可以阅读一本好的(免费)电子书Ruby on Rails 安全指南。它概述了所有常见的恶意攻击形式,甚至探讨了一些较少使用(但同样有效)的方法。它还为如何使您的应用程序更安全提供了很好的解决方案。

于 2011-02-23T19:53:38.757 回答
1

您应该在控制器中验证用户授权。

使用 FireBug 等简单工具,您可以手动编辑表单内容,甚至添加更多文本字段或类似内容。XSS 保护不会帮助您。

于 2011-02-23T19:50:08.373 回答
0

用户仍然可以在客户端生成按钮(从使用 Firebug 到更改浏览器代码的任何方法都可以)并发送表单。如果我没记错的话,令牌是在 HTML 标头中发送的,那么伪造表单就不是问题了。

于 2011-02-23T19:50:47.560 回答