如果我将我的ruby代码放入gem中,它的源代码是否安全?

时间:2015-01-23 18:46:16

标签: ruby security compilation gem

我的理解是,当我创建一个gem时,我正在将我的ruby代码编译成某种形式的可执行文件,对吧?这是否意味着除非有人使用内省技术(这对我来说是可以接受的风险),否则我的源代码是安全的?

4 个答案:

答案 0 :(得分:4)

gem不是已编译的可执行文件。它根本没有编译。 Ruby被解释了。创建gem只需将必要的文件捆绑在一起,就像zip文件或tar存档一样。

如果您希望宝石安全,请将其保存在rubygems.org之外。您可以设置自己的私有gem服务器,也可以将gem包含在需要它的项目中。

答案 1 :(得分:3)

虽然可以使用Ruby's C API将Ruby代码编译成可执行文件或共享库,但这与gems无关。

gem只是一个Ruby代码(可以是常规脚本或编译库)的集合,位于一个很好的包中,可以与rubygems包管理器一起使用。它不会隐藏/保护代码。

答案 2 :(得分:1)

我认为

gem unpack

可以提取您的代码。从未尝试过这样做,看看它是否“人类可读”,但你可以在发布宝石之前尝试一下;)

答案 3 :(得分:1)

  

我的理解是,当我创建一个gem时,我将我的ruby代码编译成某种形式的可执行文件,对吧?

没有。它只是一个带有一些元数据的zipfile。 zip文件的内容正是您放入其中的内容。

  

这是否意味着除非有人使用内省技术(这对我来说是可接受的风险),否则我的源代码是安全的?

这取决于你的意思" secure",但与RubyGems完全正交。

如果您的意思是"它无法被盗",那么版权法已为您保证。除非你生活在一个非常奇怪的国家,否则软件会在你编写它的那一刻自动受版权保护。

如果你的意思是"不能进行逆向工程"那么这是不可能的。如果您希望人们能够运行您的程序,那么您必须以CPU可以理解的格式将它们提供给它们。人类比计算机更聪明,因此,如果程序可以被CPU理解,那么人类也可以理解它。

有两种常见的方法可以解决这个问题,我称之为" Nintendo方式"以及#34; Google方式"。

任天堂的方式是为用户提供CPU和程序,因此,用户的CPU不必理解它。但是,这种模式仍然存在缺陷。只要你给用户某些东西,他就可以搞清楚。最后,它只是数学和物理,这是可以理解的。用户非常聪明。请注意,例如,大多数游戏控制台被邪恶的犯罪集团破解试图窃取代码或盗版游戏,不,他们被想要在其硬件上运行Linux或BSD的学生破解。 / p>

Google的方式是为用户提供 nothing 。您在搜索框中输入内容,Google会将结果发回给您,但该软件在任何时候都不会离开Goog​​le的数据中心。