有没有办法在Rails 3中仅在特定路由上启用XML / JSON解析?

时间:2013-02-04 14:55:51

标签: ruby-on-rails ruby xml json security

考虑到当前的Rails安全警报,我正在考虑为几个应用程序保护应用程序。他们中的大多数人几乎没有使用XML / JSON解析,当他们这样做的时候是将特定页面或钩子与第三方服务集成。

我已经看到了删除默认解析器以完全关闭功能的能力,但有没有办法在可能受http basic auth或其他方式保护的特定路由上启用它/白名单?这至少需要有人试图利用这些类型的漏洞来了解启用它的具体位置。

2 个答案:

答案 0 :(得分:0)

您所谈论的行为是作为Rack中间件实现的,它会在传入的请求到达您的控制器之前对其进行处理。

此中间件是针对不同mime类型启用的解析器列表的行为。如果要在给定请求上使用不同的参数解析逻辑时添加自定义规则,可以通过重新打开它来修补此行为。

Here's a link to the source.

答案 1 :(得分:0)

当前XML / YAML解析漏洞的主要风险与回调相关,这些回调可以为对象提供更丰富的重新序列化。因此,实现此目的的一种可能方法是仅使用为XML / YAML提供解析树的低级API,但不要在Ruby标量(字符串,数字,散列等)之外进行任何补充。如果这对您不起作用,使用Yajl之类的解析器,或者在许多情况下,仅升级到最新版本的gem,就足以允许解析保持开启状态。

此外,解析的主要风险在于参数解析,而不是响应解析。响应解析(特别是如果您可以信任该服务并通过安全通道进行通信),风险要小得多,因为您可以控制它发生的时间和地点。

相关问题