Ruby on Rails源代码安全/混淆

8

我刚开始学习Ruby on Rails开发,有一个关于源代码“隐私”的问题。

据我目前所知(我还没有部署过应用,只在本地开发环境中使用RoR),当RoR应用程序被部署时,所有的源代码都会在服务器上“可见”?

我该如何保护我的代码呢?换句话说,如何防止某些人(例如RoR服务提供商的服务器管理员)轻易地找到代码中的位置来“玩弄”它,从而达到保护的目的。

像Shopify、Yellowpages等使用RoR的网站是如何确保他们的代码不被“破坏”的呢?

更新 我真正想知道的是,假设我有一些正在进行信用卡交易的代码,我不希望一些流氓雇员读取“明文源代码”并破坏我的网站,比如读取我的源代码,然后向所有注册用户收取10美元作为恶作剧。我该如何防止这种事情的发生?


1
像Shopify、Yellowpages等网站很可能运行自己的服务器,因此他们不关心服务器管理员是否能够读取代码。如果您使用一个真正的托管提供商,我认为没有必要保护您的代码。 - Mischa
@captiontokyo,那么你的意思是代码也不需要混淆吗? - Zabba
2
如果你正在接受付款,请不要自己开发支付系统或将数据存储在自己的服务器上。可以通过像Fastspring和/或Paypal这样的平台进行支付处理。相关法规非常复杂,只需要你犯一个错误就可能会让你陷入法律纠纷。 - user370731
6个回答

13

与Matt Briggs的观点类似的是,如果你不信任你的网络主机,那么你正在处理错误的问题。如果你的网络主机想要窃取你的数据,使你的网站瘫痪,重定向你的用户等等,没有什么能阻止他们。即使代码是完全编译的汇编二进制代码,你的管理员仍然可以找到一个漏洞,替换资源或完全替换你的代码。故事的寓意是,找到一个你信任的网络主机,不要费心地混淆你的代码。


那么,人们怎么能相信任何第三方呢?当我有某个“X”目的,并且必须依赖于一个我无法控制的网络主机时,我又怎么能“信任”他们呢?这就是我心中一直在燃烧的问题。 - Zabba
@Zabba 你在这里有点过于多疑了。在像我们这样一个喜欢起诉的国家,他们做任何类似的事情都是极其愚蠢的。 - NullUserException
3
更加合理的担忧可能是共享服务器没有正确配置,导致您的数据/代码受到威胁。更多公司解决这个问题的方法是购买和保护自己的服务器。即使如此,很少有公司将其服务器托管在内部。服务器托管商有充分动力不会窃取您的数据或代码,因为(a)这是非法行为,他们不想被起诉;(b)如果他们窃取了您的代码,没人会再使用他们的服务。请原谅,但您的代码价值可能还不及他们所有客户一个月的收入总和。 - userx
我在一个托管了许多网站的地方工作。我严重怀疑大多数处于类似职位的人对这些网站上的内容没有任何兴趣,也没有时间去搞它们。对我们来说,这真的不是很有趣。 - the Tin Man

9

说到底,这需要信任。如果你的管理员想要欺骗你,那么他就会这样做,混淆并不能阻止他。


如果一个应用程序是使用x86汇编语言编写的,那么它就会更不容易受到攻击,对吗? - Zabba
2
可能是这样,但那个人控制着服务器。如果他想的话,他可以伪造你应用程序的样式,把自己的放在别处,并将人们重定向到那里。或者他只是查看你的数据库,通常其中包含比你的应用程序代码更有价值和敏感的东西。 - Matt Briggs
只有管理员不懂汇编语言时才需要使用Zabba。 - user370731

9
根据我的经验,当你销售一个部署到客户服务器的产品时,我使用http://rubyencoder.com/。它可以在许多平台上运行。但像其他人说的那样,Rails应该是开放的。

有没有开源的替代方案? - Anil Muppalla

5

3
我非常怀疑一家声誉良好的托管服务提供商会随意更改您的代码。他们已经忙于运行自己的服务器。如果他们想这样做,您也没有太多可以阻止他们的办法。在任何语言中进行代码混淆都是一件愚蠢的事情。
关于您的安全问题,我希望您不会在网站上存储任何信用卡信息。您必须遵守PCI标准才能这样做,这并不容易实现。未经PCI合规,存储CC信息是不合法的。
因此,您将需要使用支付网关(如PayPal或Authorize.net)进行支付,我相信用户将能够看到他们被收取的费用。

1

一个托管公司绝对不会触碰或调查你的代码,除非你在做一些会损害他们服务器的事情(比如无限循环,耗尽所有CPU资源),即使在那种情况下,他们也只会屏蔽那个页面或者链接。

我可以想象,如果你把应用部署到某家公司的内部网络,并且他们也有自己的开发人员,那么他们可能担心失去维护和支持费用,因为他们会自己接手。但是这些问题都可以通过合同来解决。

能够直接访问你的Ruby源代码的人应该是同事或合作伙伴,存在着明确的商业关系,通常这种商业关系价值更大。如果你不信任你的同事或者与之合作的人,那么我认为你应该重新考虑自己的立场。

我甚至相信,对客户越放松(这是源代码,如果你愿意,你可以进行编辑),通常会让他们更加信任你,更有可能再次找你合作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接