我有一个应用程序我正在使用可以扫描和设计的rails 3。我很好奇,从安全的角度来看,在控制器上授权后期操作是必要的还是有用的?假设我的所有控制器操作都需要使用身份验证(即用户必须登录)。
我可以看到为什么我需要通过cancan对我使用GET的控制器操作进行授权,因为用户可以简单地输入他们希望自由访问的URL,这必须被锁定。但是,对于帖子,用户必须从表单发布数据,该表单使用令牌防止xss攻击。
在这种情况下,可以安全地假设,如果我用cancan限制我的视图中的按钮的可见性,那么用户将无法恶意提交表单吗?
非常感谢
编辑:
感谢快速回答的人。正如下面已经指出的那样,恶意用户可以使用诸如firebug之类的工具伪造表单帖子,因此需要授权。
使用水豚/黄瓜模拟这种类型的交互(用户使用他们已经入侵的表单发布到网址)的最佳方法是什么?
再次感谢。
答案 0 :(得分:2)
用户可以提交POST请求,无论他们是否在您的网站上。你认为安全令牌有助于防止XSS是正确的,但我会为其他攻击方法添加身份验证。
如果您担心安全问题,请阅读一本好的(免费)电子书Ruby on Rails Security Guide。它概述了所有常见形式的恶意攻击,甚至探索了一些较少使用(但同样有效)的方法。它还为如何使您的应用程序更安全提供了很好的解决方案。
答案 1 :(得分:1)
您应该在控制器中验证用户授权。
使用FireBug等简单工具,您可以手动编辑表单的内容,甚至可以添加更多文本字段或类似内容。 XSS保护对您无济于事。
答案 2 :(得分:0)
用户仍然可以在客户端生成按钮(使用Firebug改变浏览器代码的任何方法)并发送表单。如果我记得正确的令牌是在HTML标题中发送的,那么伪造表单就不会有问题。