我是一个新的 Ruby/Rails 开发人员,拥有多年的 Java 经验。这个“安全”问题是特定于 ruby 的——而不是 rails——这就是为什么很难找到答案的原因,因为大多数 rails 安全问题都涉及 web 问题。
作为一名 Java 开发人员,我已经多次阅读 Effective Java。该书中提出的关键点之一是保护类中的数据和方法免受恶意用户的侵害。我的意思是:尽可能多地将代码私有化,使用不可变类并在返回对不可变对象的引用时使用防御性复制。您也可以使用 final 关键字。
但在 Ruby 中,一切都是开放的。当然,您可以将方法/数据设为私有,但作为 Ruby API 的使用者,有什么阻止我编写自己的方法版本,然后简单地(在运行时或代码中动态地)将其附加到类API?似乎 Effective Java 中讨论的所有安全性根本不适用于 Ruby。这只是从 Java 的思维转变吗?这不是 Ruby 或其他类似语言的“缺陷”吗?