html - Rails - 使用 h() 转义 HTML 并排除特定标签

标签 html ruby-on-rails security escaping

我想知道,到目前为止,无法在网上找到任何答案,如何完成以下任务。

假设我有一个包含以下内容的字符串:

my_string = "你好,我是一个string。" (在预览窗口中,我看到这实际上是粗体和斜体格式,而不是显示“strong”和“i”标签)

现在,我想使用 html_escape()(或 h())方法/函数来确保安全。 所以我想阻止用户插入任何 javascript 和/或样式表,但是,我仍然希望以粗体显示单词“Hello”,以斜体显示单词“string”。

据我所知,除了文本本身之外,h() 方法不接受任何其他参数。

有没有办法只转义某些 html 标签,而不是全部?喜欢白色或黑色列表标签?

这可能看起来像的例子,我想说的是:

h(my_string, :except => [:strong, :i]) # => 所以基本上,转义所有内容,但单独留下“strong”和“i”标签,不要转义这些。

有什么方法可以实现吗?

提前致谢!

最佳答案

排除特定标签实际上是一个非常困难的问题。特别是 script 标签可以插入到 very many different ways 中- 检测它们是非常棘手的。

如果可能的话,不要自己实现。

关于html - Rails - 使用 h() 转义 HTML 并排除特定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1494648/

相关文章:

javascript - .play() 在 Safari 中不起作用

javascript - vanilla JS将鼠标悬停在div上更改背景颜色

ruby-on-rails - 获取类别和子类别的所有产品(rails,awesome_nested_set)

ruby-on-rails - 翻译事件管理员 default_actions

c# - Windows Identity Foundation 中的 TrustedIssuers

JavaScript。 Onclick 始终返回相同的对象

html - 如何使并排的两个 div 居中?

ruby-on-rails - 在 View 中嵌入实时 Rails 控制台

web-services - Paypal 如何从那里保护客户数据 业务合作伙伴?

c - 使用后明确清除/归零敏感变量是否明智?