使用 html_safe 时如何修复 rails 中的跨站点脚本安全警告?

ven*_*kat 6 ruby-on-rails-4

我使用了brakeman 在我的应用程序中生成扫描报告。它在我的报告/显示页面中以高可信度生成了许多跨站点脚本安全警告:

第 104 行附近未转义的模型属性:Report.find(params[:id]).remarks

我在链接中看到过,但无法修复。请帮忙。这是我面临错误的显示页面中的行:

<%= @report.remarks.html_safe %>
Run Code Online (Sandbox Code Playgroud)

Jus*_*tin 7

Brakeman 会警告任何潜在的用户输入输出而没有 HTML 转义的情况。来自数据库的值算作“潜在用户输入”。

如果您希望remarks报告包含您希望浏览器将其解释为 HTML 的 HTML,那么您必须使用html_safe并且您有责任确保 HTML 是安全的——也许通过调用sanitizestrip_tags。如果您不希望remarks包含 HTML,则删除对html_safe.

这个html_safe调用本质上是告诉 Rails “这个字符串是安全的,不要转义它。” 如果这是您的意图,那么您可以忽略这些警告