草庐IT

c++ - RedHat devtoolset - 对分发编译代码的影响

全部标签

ruby-on-rails - 使用 constantize 在 ruby​​ 中远程执行代码

当使用contantize时,我正试图解决ruby​​/rails中的远程代码执行漏洞。我知道能够向服务器提供任何类名可能存在潜在危险,但我想知道这本身是否危险。例如,如果RailsController代码看起来像这样(即在实例化对象上执行硬编码方法):klass=params[:class].classify.constantizeklass.do_something_with_id(params[:id])ifklass.respond_to?('do_something_with_id')此代码易受攻击吗?还是只能结合指定要在类上调用的方法? 最佳答案

Ruby:C类包含模块M;在 M 中包含模块 N 不会影响 C。什么给了?

更详细地说,我有一个模块Narf,它为一系列类提供基本功能。具体来说,我想影响所有继承Enumerable的类。所以我在Enumerable中includeNarf。Array是默认包含Enumerable的类。然而,它不受Narf延迟包含在模块中的影响。有趣的是,在包含之后定义的类从Enumerable获取Narf。示例:#ThismoduleprovidesessentialfeaturesmoduleNarfdefnarf?puts"(from#{self.class})ZORT!"endend#IwantallEnumerablestobeabletoNarfmoduleEnu

ruby - 打印 block 的实际 Ruby 代码?

这个问题在这里已经有了答案:PrintingthesourcecodeofaRubyblock(6个答案)Rubyblocktostringinsteadofexecuting[duplicate](3个答案)关闭8年前。这可能吗?defblock_to_s(&blk)#codetoprintblockscodehereendputsblock_to_sdostr="Hello"str.reverse!printstrend这会将以下内容打印到终端:str="Hello"str.reverse!printstr

我可以覆盖用 C 编写的 Ruby 方法吗?

是否可以使用Ruby代码覆盖Ruby本身的一部分方法,例如rb_error_frozen,它们是用C语言编写的?背景:我想知道当卡住的对象被修改时,是否有可能让Ruby仅记录警告,而不引发异常。这样,我可以记录各种状态修改,而不是在第一次发生时停止。我主要考虑使用YARV执行此操作,但如果这样更容易,我可以使用其他实现。是的,这是一个whyday项目!不要在生产环境中尝试这个! 最佳答案 我只能代表MRI/YARV,但我会试一试。如果C函数已明确定义为Ruby对象上的方法,则只能在Ruby中覆盖源自C的函数。例如,Kernel#ex

Ruby,Splat 的源代码?

昨天有人问splat运算符,我想看源代码……是用C写的还是Ruby写的?在哪里可以找到? 最佳答案 一些快速的谷歌搜索显示它是在eval.c中实现的。.您可以在文件中的几个地方找到对“splat”的引用,但我对Ruby的内部工作原理还不够熟悉,无法理解它。 关于Ruby,Splat的源代码?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/921403/

ruby - 当应用程序关闭时,我要在 Sinatra 中的什么位置放置要执行的代码?

我正在为我的网络应用程序使用Sinatra。当我的应用程序关闭时,我有一些要执行的清理代码。Sinatra中是否有针对此的Hook,还是我必须使用单独的机制? 最佳答案 看Kernel#at_exit,如果您在主应用程序文件中的某处定义这样的block,我不明白为什么它不能在Sinatra应用程序中工作。更新:根据matt的评论,您必须在要求Sinatra之前定义您的at_exit处理程序。 关于ruby-当应用程序关闭时,我要在Sinatra中的什么位置放置要执行的代码?,我们在Sta

ruby - 为 Heroku 静态编译 pdftk。需要将 PDF 拆分为单页文件

所以我们使用heroku来托管我们的rails应用程序。我们搬到了雪松堆。此堆栈未安装pdftk库。我联系了支持人员,被告知为amd64ubuntu静态编译它并将其包含在我的应用程序中。事实证明,这比我想象的要难。最初我下载了ubuntu的包(http://packages.ubuntu.com/natty/pdftk),将其解压缩,并包含二进制文件和共享库。我收到奇怪的错误,例如:UnhandledJavaException:java.lang.NullPointerExceptionatcom.lowagie.text.pdf.PdfCopy.copyIndirect(pdftk)

Ruby 代码混淆

这个问题在这里已经有了答案:Rubyobfuscator[duplicate](3个答案)关闭9年前。我必须混淆ruby​​代码以隐藏敏感源。我需要朝着正确的方向前进才能实现我想要的,所以:是否有Python的pyc的Ruby替代品?,我在许多gem中看到了version.rbc文件。它是如何产生的?此过程是否适用于其他(复杂的,而不仅仅是简单的版本声明)类型的Ruby文件?RubyEncoder可以完成这项工作(可以吗?帮我解决这个问题),但它需要购买许可证。这就是为什么我会将其视为最后的手段。任何其他建议

ruby - Fastfile 中的代码到底是什么

看起来不像一个普通的Ruby类,那么它到底是什么呢?一个大的Ruby“block”,一些被解析的自定义元语言?只是好奇。我知道您可以在Fastfile中使用Ruby;该范式达到了多远,您可以在Fastfile中定义类或函数,还是必须仅保留faSTLane支持的“channel”概念? 最佳答案 Doesn'tlooklikeastraightRubyclass不是一个类,不是。但仍然是普通的ruby。有点DSL魔法。这意味着您可以自由地定义类或以其他方式做任何您想做的事情,只要您仍然正确配置faSTLane(调用lane方法等等)。

ruby - 如何安全地让用户运行任意 Ruby 代码?

我意识到这听起来有点疯狂,但我正在做一个项目,我需要一个服务器来运行用户提供的Ruby代码并返回结果。我想防止这样的事情发生:system("rm-rf/")eval("something_evil")#etc...我确信一定有一些相当安全的方法可以做到这一点,因为它已经存在于tryruby.org等地方。非常感谢任何帮助,谢谢! 最佳答案 三个建议:1)看看Rubytaintlevels.这提供了一定程度的保护,防止eval('evil_code')类型的东西,等等。2)除非用户确实需要访问本地文件系统,否则请使用类似fakefs