問題

string.html_safe 允許一個 string 顯示時不再進行 html_encode,因此可能會有安全性問題。

http://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Rails/OutputSafety

為了避免直接將 string 輸出,我們可以先對 string 做檢查後再輸出。

可以使用 rails 提供的各種檢查工具,組合出我們想要的內容。

使用 content_tag

https://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag

content_tag(:p, user_content)

content_tag 會將 user_content 做 html_encode。

使用 concat

ActiveSupport::SafeBuffer 做 concat 時會將 user_content 做 html_encode。

out.safe_concat(user_content)

可以用來組合 ActiveSupport::SafeBuffer 和 String

safe_join

out = []
out << content_tag(:li, user_content)
out << content_tag(:li, user_content)
safe_join(out)

使用 safe_join 來組合多個 ActiveSupport::SafeBuffer 和 String

results matching ""

    No results matching ""