ruby-on-rails - Rails 安全问题

标签 ruby-on-rails ruby security

我主要是一名 Java 程序员,我们不必担心 php 甚至 rails 开发人员必须担心的许多安全问题,这真是令人惊讶。我们不得不担心他们,但我认为我们的工作实际上要容易得多。您只需使用 Java(那里已经有很大的加分点)并使用具有 Spring 安全性的 Spring……您基本上就完成了。 Java 和 servlet 实际上在这方面非常好。

现在我在 Rails 中工作,我认为我最害怕的最大安全问题是参数 - 来自 Controller 的参数(因为它们是动态哈希,不像 SpringMVC)和具有在表单中包含更多隐藏值。

但这让我开始思考 - 在创建新模型甚至更新模型时,您确实必须小心接受的内容。如果您只是盲目地将参数传递给您的模型,可能会发生不好的事情。事实上,如果您不太小心,用户角色之类的东西可能会发生变化。

这几乎就像我想手动编写 setter 代码以确保它不会覆盖它不应该覆盖的内容。即使有一个框架机制来处理这个......我仍然想测试每个有风险的模型属性,只是为了额外确保它不会在创建和更新时被覆盖。

尽管 Java 在生产力方面的名声不好,但感觉它在处理这些问题上要好得多。

无论如何,我的问题是 - 使用 rails 处理常见安全陷阱/疑虑/问题的最佳资源/技巧/建议是什么 - 特别适合习惯于在更有状态的环境中工作的 Java/Spring 开发人员。

更好的是,什么是每隔一段时间检查一次的好 list ?

最后,您会推荐哪些测试来确保一切可靠?

最佳答案

至少对于您对在没有适当检查的情况下将数据分配给模型对象的担忧,请查看 attr_accessible声明;它只允许通过批量分配来分配指定的属性:

user = User.new(params[:user])
user.approved = params[:user][:approved]
user.role     = params[:user][:role]

您可能会找到 Ruby on Rails 3rd edition 的整个第 27 章书有用。 (我还没有更新我的 4th Edition 书,不确定推荐新书中的哪一章。:)

关于ruby-on-rails - Rails 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6091962/

相关文章:

ruby - 如何使用 Ruby 将键盘和鼠标命令发送到底层操作系统?

ruby - 错误 : Could not find a valid gem 'sinatra/reloader' (>= 0) in any repository

ruby-on-rails - 当使用 Rails 运行 byebug session 并且服务器超时时,如何恢复我的文本/光标?

ruby-on-rails - 使用 ActiveSupport::Concern 使 ClassMethods 也可用作模块函数

ruby-on-rails - ORDER BY 子句中的 find_by_sql 和单引号

windows - 当我在主机内运行 Virtual Box 时是否需要执行更新?

security - 阻止对单个 mercurial 存储库中特定分支的写访问

windows - IIS - 您无权查看此页面错误消息

ruby-on-rails - 谷歌应用引擎 : Best practice for hiding Rails secret keys?

java - 如何在 Sun Solaris 11 上将 java 版本从 1.6.0 降级到 java 1.5.0