Tag: 混淆

在Rails应用程序中混淆ID

我试图模糊离开服务器的所有ID,即ID出现在URL和HTML输出中。 我写了一个简单的Base62 lib,它有方法编码和解码。 定义或更好地覆盖ActiveRecord的id方法以返回id的编码版本,并调整控制器以使用解码的params[:id]加载资源,从而得到所需的结果。 现在,id在URL中编码为base62,响应显示正确的资源。 现在我开始注意到通过has_many关系定义的子资源没有加载。 例如,我有一个名为User的记录has_many Post s。 现在User.find(1).posts为空,尽管有些post的user_id = 1 。 我的解释是,ActiveRecord必须将Post的user_id与User的方法 id进行比较 – 我已经覆盖了 – 而不是与self[:id]进行比较。 所以基本上这使得我的方法毫无用处。 我想要的是在模型中定义obfuscates_id并且其余部分将被处理,即在适当的位置进行所有编码/解码并防止服务器返回id。 有没有可用的gem或有人有提示如何实现这一目标? 我敢打赌,我不是第一个尝试这个的人。

用于保护S3文档的Rails实现

我想通过rails app保护我的s3文件,如果我去: www.myapp.com/attachment/5应在显示/下载文档之前对用户进行身份validation。 我已经阅读了关于stackoverflow的类似问题,但我不确定我是否已经看到任何好的结论。 根据我的阅读,您可以采取一些措施来“保护”您的S3文档。 1)模糊URL。 我做到了这一点。 我认为这是一件好事,所以没有人可以猜到这个url。 例如,如果您的S3 URL显而易见,那么很容易“遍历”URL: https : //s3.amazonaws.com/myapp.com/attachments/1/document.doc 。 有一个URL,如: https : //s3.amazonaws.com/myapp.com/7ca/6ab/c9d/db2/727/f14/document.doc似乎好多了。 这很好,但不能解决通过电子邮件或网站传递URL的问题。 2)使用如下所示的过期URL: Rails 3,paperclip + S3 – 如何存储实例并保护访问对我而言,这不是一个很好的解决方案,因为URL被暴露(即使只是很短的一段时间)并且另一个用户可能及时重用URL。 您必须调整允许下载的时间,而不会提供太多的复制时间。 这似乎是错误的解决方案。 3)通过应用程序代理文档下载。 起初我尝试使用send_file: http : //www.therailsway.com/2009/2/22/file-downloads-done-right但问题是这些文件只能是服务器上的静态/本地文件不通过其他网站(S3 / AWS)提供服务。 但是,我可以使用send_data并将文档加载到我的应用程序中,并立即将文档提供给用户。 这个解决方案的问题很明显 – 带宽的两倍和时间的两倍(将文档加载到我的应用程序然后再返回给用户)。 我正在寻找一种能够提供#3完全安全性的解决方案,但不需要额外的带宽和时间来加载。 看起来Basecamp正在“保护”他们应用程序背后的文档(通过身份validation),我认为其他网站正在做类似的事情,但我不认为他们正在使用我的#3解决方案。 建议将不胜感激。 更新 : 我选择了第四个解决方案: 4)使用amazon存储桶策略来控制基于引用者的文件访问: http : //docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?UsingBucketPolicies.html 再次更新: #4井可以通过浏览器开发人员的工具轻松解决。 所以我仍然在寻找一个可靠的解决方案。

如何在rails中混淆记录的ID?

我试图弄清楚如何在rails中混淆我的记录的ID。 例如:典型的路径可能看起来像http:// domain / records / 1 ,因此人们很容易推断出网站在创建新记录时会获得多少流量。 我使用的一个解决方案是使用salt来散列id,但由于我不确定该函数是否是双射的,我最终将其存储在数据库的另一列中并仔细检查唯一性。 我想到的另一个选择是生成随机哈希并将其存储为另一列。 如果它不是唯一的……只需生成另一个。 这样做的最佳方法是什么?

如果这段代码不是一个笑话,它究竟是如何工作的?

class Tree def initialize*d;@d,=d;end def to_s;@l||@r?”,>”:@d;end def total;(@d.is_a?(Numeric)?@d:0)+(@l?@l.total: 0)+(@r?@r.total: 0);end def insert d alias g instance_variable_get p=lambda{|s,o|d.to_s.send(o,@d.to_s)&& (g(s).nil??instance_variable_set(s,Tree.new(d)):g(s).insert(d))} @d?p[:@l,:]:@d=d end end 有人愿意尝试解释这是做什么的吗? 它似乎是一个问题的答案,我问的代码太聪明了 。 但是,对我来说,判断这只是一个笑话真是太聪明了。 如果不是,我有兴趣知道它是如何工作的,如果有人愿意解释的话。

在MRI Ruby / JRuby上为企业客户模糊Rails应用程序

对于将在其服务器上运行我们的Rails应用程序的企业客户,我们不希望向他们提供Rails应用程序的源代码。 使用MRI Ruby甚至JRuby可以: 模糊源代码 在JRuby的情况下,将Rails应用程序变为.jar / .war(因此它是混淆的和字节码) 在MRI Ruby的情况下,将Rails应用程序打包到EXE中 有关这是否可能的任何想法?

Ruby on Rails源代码安全/混淆

我刚刚开始使用Ruby on Rails开发,我有一个关于源代码“隐私”的问题。 根据我目前所知( 我尚未完成部署,仅在本地开发环境中使用RoR ),在部署RoR应用程序时,所有源代码在服务器上都是“可见的”? 我该如何保护我的代码; 可以这么说? 保护我的意思是,主要目的是某人( 例如RoR提供商的服务器管理员 )无法通过轻松搞清楚代码中的哪个地方来“破坏”代码。 像Shopify,Yellowpages等使用RoR的网站如何确保他们的代码不被“破坏”? 更新我真正想要的是,假设我有一些代码正在进行信用卡交易,我不希望一些流氓员工阅读“纯文本源代码”并破坏我的网站,比如通过阅读我的源代码然后向所有已注册用户收取10美元的费用。 我该如何防止这种事情发生?

你可以在没有源的情况下分发Ruby on Rails应用程序吗?

我想知道是否可以在没有源代码的情况下分发用于生产的RoR应用程序? 我在SO上看过这篇文章 ,但我的情况有点不同。 这将是一个由具有一些线索的人管理的应用程序,所以我很酷,仍然需要在客户端设置Apache / Mongrel / MySQL。 我真正想要的是保护源。 编码似乎是分发PHP应用程序的一种流行方式(例如: Helpspot )。 我发现了这些潜在的解决方案: Zenobfuscate – 然而,并不支持所有类型的Ruby代码,所以这一点很重要 Ruby编码器 – 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没有尝试过)但它还没有。 我之前使用过IONcube for PHP并且运行良好,但IONcube似乎并不感兴趣 。 弹弓 – 它在其他SOpost中被提及,但它解决了我的一个不同的问题,源仍然是可见的。 RubyScript2Exe – 来自doco,它不是生产就绪的,所以重要的是。 我听说可能使用JRuby并分发字节码可能是实现这一目的的一种方法,但我从未使用过JRuby所以我不确定涉及到什么。 任何人都可以提供任何想法和/或已知示例吗? 理想情况下,我也喜欢拥有某种自动构建方案。