繁体   English   中英

Rails形式的text_field转义html

[英]Rails form text_field escaping html

在我的Rails表单上进行试验,发现将<scrip>alert("hello")</script>插入text_field会给我两个不同的结果。

当我在显示页面中使用该值时,该值会自动转义。

当我以新的形式使用该值(例如,允许用户编辑)时,不会转义该值,并且会弹出警报弹出窗口。

经过大量研究,我发现text_area的转义布尔值可以防止这种情况发生,但是text_field却不能。 google上出现的大多数内容都是关于在erb模板中转义,当使用表单时,这似乎无效。 有一些提示应该将数据清理到db中,但是关于最佳方法的指南很少-除了使用xssterminate这样的旧解决方案外,这似乎可以追溯到Rails2。甚至RoR安全性该指南着重于清理erb输出,而不是清理输入。

两个问题。

  1. 在保存text_field输入之前,目前的最佳做法是什么? (例如:在表单,控制器或模型中。哪些宝石仍被视为当前宝石?)
  2. 无论如何,由于我很偏执,因此在显示数据库数据时如何清理text_field?

丝瓜络-activerecord宝石( https://github.com/flavorjones/loofah-activerecord )看起来像是最好的选择,它可以清理进入数据库的数据。 在模型上使用xss_foliate会默认剥离所有列的标签。

例如

class User < ActiveRecord::Base
  xss_foliate

  ...
end

我还没有找到第二点的解决方案,但是如果有一个解决方案,我将非常想知道!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM