可以将Ruby编译/编码为二进制以隐藏代码吗?

时间:2019-02-27 09:05:36

标签: ruby-on-rails ruby

我的Ruby on Rails应用程序当然包含所有业务逻辑和算法,如果我将其安装在客户服务器上,则他们可以读取我的源代码,我想对其保密以保护我的业务。< / p>

PHP有几个工具可以将php项目并将其编码为字节码,而这正是我希望对Ruby on Rails能够做到的。

有几个Ruby on Rails打包器,它们只是将它们打包成一个可执行文件,但是纯的Ruby源代码仍然存在。

问题

在客户服务器上安装Ruby on Rails源/产品时如何保护它?

2 个答案:

答案 0 :(得分:2)

有一些Ruby代码混淆器(与打包程序结合使用)会产生至少在某种程度上很难反向工程的东西。

如果出于商业需要保护代码,则可以尝试使用RubyEncoder,这是一种旨在完全实现您想要的功能的商业产品。 (免责声明:我没有)

请注意,如果代码中的机密对您而言如此重要,则您可能希望使其成为客户访问的服务(例如Web服务),而不是您在其系统上部署的代码。但这出于种种不同的原因可能对您来说是不可行的(或不理想的)……

答案 1 :(得分:-2)

不可能以机器可以执行的方式对代码进行编码,但是人类无法阅读。为了让您的客户运行代码,CPU必须理解代码。 CPU比人类愚蠢得多,因此,如果CPU能够理解代码,那么人类也可以理解。

保护代码的唯一方法是不放弃它。在您自己的场所托管该应用程序,并将其作为服务出租给用户。

请注意,读取您的代码是非法的,那么为什么您认为没有牢狱之灾的人可以通过某些可以反向工程的编码阻止访问您的秘密呢? (请注意,即使他们拥有未编码的源代码,他们仍然仍然需要对其进行逆向工程,因为如果无法访问您的源存储库和设计文档,他们也不知道代码为何为什么这样写。)

另外,对于毫无违法行为的人来说,贿赂您知道 代码工作方式的一名员工比对代码进行反向工程要容易得多。

Ruby没有通用的字节码格式。有几种不同的Ruby实现,其中有些具有字节码格式,有些则没有。例如。 Opal是一个输出ECMAScript的编译器,不涉及字节码。 XRuby是JVM的编译器,但已被放弃。 Ruby.NET是.NET的编译器,但已被放弃。 JRuby是JVM的实现,还包括一个编译器。 YARV,MRuby和Rubinius都有不同的不兼容字节码格式。其中一些实现允许从磁盘加载字节码,有些则不允许。

相关问题