2011-02-23 82 views
1

我有一个应用程序,我正在写轨道3 W /康康和设计。我很好奇,从安全的角度来看,授权控制器上的后置操作是必要的还是有用的?假设我所有的控制器动作都需要认证w/devise(即用户必须登录)。发布操作需要Rails授权吗?

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

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

非常感谢

编辑:

感谢您的快速答复家伙。正如下面已经指出的,恶意用户可以使用诸如萤火虫之类的工具伪造一个表格帖子,因此授权是必要的。

使用水豚/黄瓜来模拟这种类型的交互(用户张贴到他们已被黑客入侵的URL)的最佳方式是什么?

再次感谢。

回答

2

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

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

1

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

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

0

用户仍然可以在客户端生成按钮(使用Firebug更改浏览器代码的任何方法)并发送表单。如果我记得正确的令牌是在HTML头文件中发送的,伪造表单不会有问题。