Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 进一步保护rails应用程序的最佳方法是什么?_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1_Raise - Fatal编程技术网

Ruby on rails 进一步保护rails应用程序的最佳方法是什么?

Ruby on rails 进一步保护rails应用程序的最佳方法是什么?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,raise,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Raise,我正在使用rails 3.2和Desive 1.5.3 我在模型中添加了一个admin属性,如Desive wiki上的选项2所述 我在强制登录的post控制器中添加了以下内容: before_filter :authenticate_user! 我写了一些逻辑,根据您是否是管理员,在我的视图中隐藏编辑/新建链接 我觉得我还有很多事情要做。。我是否应该在新建/编辑/删除操作中添加其他内容以使其更安全?如果是这样,在哪里?您的身份验证和授权机制负责为您提供安全保护,您应该确保定期使用安全更新对其

我正在使用rails 3.2和Desive 1.5.3

我在模型中添加了一个admin属性,如Desive wiki上的选项2所述

我在强制登录的post控制器中添加了以下内容:

before_filter :authenticate_user!
我写了一些逻辑,根据您是否是管理员,在我的视图中隐藏编辑/新建链接


我觉得我还有很多事情要做。。我是否应该在新建/编辑/删除操作中添加其他内容以使其更安全?如果是这样,在哪里?

您的身份验证和授权机制负责为您提供安全保护,您应该确保定期使用安全更新对其进行更新

只有通过测试才能可靠地掩盖你对遗漏某些东西的失落感。因此,编写一些测试来验证您设置Desive安装的方式实际上是正确的,并且非管理员用户无权访问他们不应该访问的任何内容。然后要非常小心,确保在添加新内容时更新安全限制

你不需要写测试来确保设计工作正常,但是你需要写测试来确保你对它的使用是你所认为的(即,如果非管理员无法访问管理员页面,请编写一个以非管理员身份登录的测试,尝试访问该页面,并在测试中验证用户是否被重定向,如果您收到“访问被拒绝”消息,则会触发此测试)。这样,如果您以后无意中中断了安全访问,您至少有可能被测试套件中的测试捕获


在每次部署之前运行您的测试套件,确保所有测试(尤其是安全测试)正在运行和通过。然后保持警惕,这就是你所能做的。

你的答案可能有效,但如果你使用
一些逻辑来隐藏我视图中的编辑/新链接,则很难确保整个应用程序的安全性
,而且我很确定再多的
安全测试
也不会给你费用玲玲,也许你忘了什么

例如,我可以让某人登录、、(没有管理员配置文件)并转到(URL中):
/users/edit/3
并开始破坏您的宝贵信息

情况是:Deave只提供身份验证,,,但授权必须以其他方式强制执行,否则我可以做上述事情


为此,我强烈推荐(当然来自rbates)这是我个人测试过的一个,只需阅读中的文档和示例,就可以很容易地进行配置……希望能有所帮助!

感谢您建议cancan。我开始想办法,我正在编写一些代码来保护控制器级别的东西。cancan可能是一个更简单、更经过测试的解决方案。我是Ruby/Rails n00b,这样我就可以很容易地把事情搞砸;-)计划使用rspec编写一些测试用例,看看事情是否按预期进行。显然,如果我写对了,我会更有信心事情会顺利进行。这听起来是个不错的计划。正如JM提到的隐藏链接的安全性,请确保您在测试中直接命中操作,并假设任何潜在的黑客都将自定义构建他们的URL和参数,并确保您不只是依靠隐藏链接来实现安全性,即不信任从浏览器传入的参数。