【问题标题】:Prevent Display Of Html Tags From User Input Sinatra?防止从用户输入 Sinatra 中显示 Html 标签?
【发布时间】:2015-08-16 09:22:21
【问题描述】:

我有一个应用程序,用户可以在其中输入他们想要的任何内容,它会显示在单独的页面上。我想让它准确显示用户输入的内容,而不是将标签处理为 html。例如,如果用户输入let me use a <hr>,它实际上不会创建水平线,而是输出let me use a <hr>。这必须对用户输入中的所有 html 标记通用地执行此操作。

【问题讨论】:

  • 你试过什么?你有什么问题?我原以为在视图中的字段周围放置一个<pre> 标记就可以了,但我可能完全忽略了这一点——没有你的代码或自己尝试,很难知道这里的问题实际上是什么.

标签: ruby heroku sinatra


【解决方案1】:

这就是我在我的应用程序中的做法,将以下内容添加到 app.rb:

helpers do
  include Rack::Utils
  alias_method :h, :escape_html
end

那么在你看来你可以这样做:

<%= h user_input %>

【讨论】:

  • 我会试试的。我阅读了有关使用 h 函数的信息,但我总是收到关于未声明它的错误。
【解决方案2】:

我实际上最终解决了我自己的问题。我写了这个函数:

def func(var)
     var = var.gsub(/[<]/,"&lt")
     var = var.gsub(/[>]/,"&gt")
end

并在我需要插入 HTML 的任何字符串上调用它。

【讨论】:

  • 这个会起作用,但请不要使用这个,像这样使用正则表达式不会保护你免受 XSS 攻击。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
相关资源
最近更新 更多