我是一个相当新手的Rails开发人员,但因为Rails中的大多数事情都很简单,所以我总是担心在编写代码时会添加一个新的安全漏洞。例如,就在一个小时前,我在几周前编写的代码中发现了一个错误,在UsersController的编辑方法中,我忘记检查您正在编辑的用户是否与您登录的用户相同(例如,@user = User.find params[:id]而不是@user = current_user)。我之所以这样写,是因为我通常会在所有的编辑方法中使用它(例如@post = Post.find params[:id])。这将显示另一个用户的电子邮件地址。
Rails应用程序中我应该注意的常见安全漏洞是什么?容易因为约定而被忽视的事情(比如上面的例子)?
发布于 2011-02-06 11:38:53
像您所说明的常识问题可能是最重要的安全问题。Rails在创建更安全的框架方面已经走了很长一段路,例如,困扰着许多PHP应用程序的SQL注入(在很大程度上)被现在的默认表单输入所覆盖。Rails安全的官方词汇是一个很好的读物:http://guides.rubyonrails.org/security.html
发布于 2011-02-17 04:41:28
创建新控制器后,我要做的第一件事就是设置一个功能测试,以确保用户只能做他们应该做的事情。在您的示例中,测试应该断言用户只能编辑自己的帐户详细信息,而管理员也应该能够编辑其他帐户。
使用这种方法,您还可以验证在重构过程中没有破坏任何东西,这反过来又可以防止您在以后的项目中意外地重新打开安全漏洞。
您可能会发现以下内容很有用:
http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers
http://guides.rubyonrails.org/security.html
https://stackoverflow.com/questions/4911374
复制相似问题