ruby 为什么Rubocop不允许html_safe或raw()Rails

zvms9eto  于 2022-11-04  发布在  Ruby
关注(0)|答案(2)|浏览(136)

这是我的代码谁不通过Rubocop,因为:
导轨/输出安全:将字符串标记为html安全可能会带来安全风险。

def number_with_html_delimiter(num)
   number_with_delimiter(num)
      .gsub!(' ', content_tag(:span, "", class: "numbers-delimiter")).html_safe
end

我需要把一些css的自定义跨度把空间在HTML和当我删除html_safe它不工作。
请帮忙,先谢了

gcuhipw9

gcuhipw91#

html_saferaw()在安全性方面是不安全的。您可以在使用html_safe(或raw)方法的程式码前后使用# rubocop:disable Rails/OutputSafety# rubocop:enable Rails/OutputSafety,以停用html_safe(或raw)的rubocop


# rubocop:disable Rails/OutputSafety

def number_with_html_delimiter(num)
   number_with_delimiter(num)
      .gsub!(' ', content_tag(:span, "", class: "numbers-delimiter")).html_safe
end

# rubocop:enable Rails/OutputSafety
gojuced7

gojuced72#

对于Rails文档的常见标记和属性,建议使用sanitize
在帮助器中:


# Use `!` to indicate that `sanitize` should be used

def number_with_html_delimiter!(num)
   number_with_delimiter(num)
      .gsub(' ', content_tag(:span, "", class: "numbers-delimiter")).html_safe
end

在您看来:

<%= sanitize number_with_html_delimiter!(1000) %>

相关问题