从Rails中清理JSON的最佳方法

时间:2011-07-28 15:29:38

标签: json ruby-on-rails-3 sanitize

RoR 3自动清理ERB模板(正确完成后)。但是,我有一个小项目,我只在应用程序层使用RoR,在演示文稿中使用javascript。因此,典型的请求是对rails路由的ajax调用和渲染返回的json。问题是我现在可以注入js,创建一个标题为<script>alert('hello')</script>的新产品,并在下一个请求中按原样返回,浏览器会愉快地解释脚本。

最好

  1. 清理帖子上的输入?
  2. 清理服务器上的json响应? (覆盖to_json?)
  3. 清理客户端上的json响应?
  4. 我感谢任何意见。

1 个答案:

答案 0 :(得分:1)

当您将数据附加到页面时,您应该在内容客户端对HTML实体进行编码。

问题是,您的其他产品字段是否故意包含标记,例如链接或段落标记,这些标记也将被编码?如果是这种情况,并且您打算将json响应的某些部分呈现为页面上的HTML,那么您应该在创建新产品时清理输入,并限制HTML标记,您允许特定的子集,然后擦除其属性。有些库可以自动执行此过程,例如sanitize gem