【发布时间】:2011-06-14 04:40:09
【问题描述】:
我想在我的 rails 应用程序中使用一些“命名空间”自定义标签(使用 radius gem 开发)。我想使用 sanitize gem 来防止 xss 攻击,但是没有描述如何在 sanitize 中配置命名空间。有什么办法吗?
【问题讨论】:
标签: ruby-on-rails ruby xss sanitization sanitize
我想在我的 rails 应用程序中使用一些“命名空间”自定义标签(使用 radius gem 开发)。我想使用 sanitize gem 来防止 xss 攻击,但是没有描述如何在 sanitize 中配置命名空间。有什么办法吗?
【问题讨论】:
标签: ruby-on-rails ruby xss sanitization sanitize
sanitize gem 不支持命名空间。简单地看一下 sanitize 的代码,清理元素的转换类和它实际解析 html 的方式都没有给 Nokogiri(xml 解析器底层 sanitize)提供它需要能够识别和处理命名空间的信息),因此无需修改 sanitize支持这个,这不可能。
您将能够在 sanitize 中看到没有前缀命名空间的标签,因此,如果它们都具有不与任何其他标签冲突的自定义名称,您可以指定这些名称,但使用当前编写的 sanitize ,您无法过滤特定于命名空间的标签。
【讨论】:
据我所知,sanitize gem 只是从控制器中的参数中过滤 javascript 和 HTML。也许自从我上次查看以来它已被延长。
不,您不能命名大多数宝石。有一些技巧可以用猴子补丁在它们周围放置包装器。如果需要,我会用谷歌搜索“ruby 命名空间冲突”,你会得到类似How to resolve Rails model namespace collision
【讨论】: