【发布时间】:2013-08-27 12:33:26
【问题描述】:
当使用contantize 时,我正试图解决 ruby/rails 中的远程代码执行漏洞。
我知道能够向服务器提供任何类名可能会有潜在的危险,但我想知道这个本身是否有危险。
例如,如果 Rails 控制器代码看起来像这样(即在实例化对象上执行硬编码方法):
klass = params[:class].classify.constantize
klass.do_something_with_id(params[:id]) if klass.respond_to?('do_something_with_id')
此代码是否易受攻击?还是仅结合指定要在类上调用的方法?
【问题讨论】:
-
我不知道这是否容易受到攻击,但 param 中的类名看起来一点也不好看。你能发布你的真实目的吗?如果不使用这些,很有可能有更好的解决方案。
-
我完全同意可能有更好的方法,即使它现在不脆弱,最好不要使用这样的东西。但是,我只是对现阶段的理论利用可能性(或缺乏)感到好奇,而不是如何改进代码。
标签: ruby-on-rails ruby security