一个简化的例子是这样的:
def expand_links(message)
message = strip_tags(message)
message = message.gsub('[register]') { link_to('register', new_user_path) }
message = message.gsub('[login]') { link_to('login', new_sessions_path) }
message.html_safe
end
我正在使用strip_tags
,但确保没有XSS的机会。
那么没有strip_tags
和html_safe
这样做的正确方法是什么?
这是我从@ iceman的suggestion所做的:
def expand_links(message)
message = strip_tags(message)
message = message.gsub('[register]') { link_to('register', new_user_path) }
message = message.gsub('[login]') { link_to('login', new_sessions_path) }
sanitize(message, tags: ['a'], attributes: ['href'])
end
(BTW清理不适用于符号)
https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html