RoR 3自动清理ERB模板(正确完成后)。但是,我有一个小项目,我只在应用程序层使用RoR,在演示文稿中使用javascript。因此,典型的请求是对rails路由的ajax调用和渲染返回的json。问题是我现在可以注入js,创建一个标题为<script>alert('hello')</script>
的新产品,并在下一个请求中按原样返回,浏览器会愉快地解释脚本。
最好
我感谢任何意见。
答案 0 :(得分:1)
当您将数据附加到页面时,您应该在内容客户端对HTML实体进行编码。
问题是,您的其他产品字段是否故意包含标记,例如链接或段落标记,这些标记也将被编码?如果是这种情况,并且您打算将json响应的某些部分呈现为页面上的HTML,那么您应该在创建新产品时清理输入,并限制HTML标记,您允许特定的子集,然后擦除其属性。有些库可以自动执行此过程,例如sanitize gem。