使用gsub插入链接时如何避免html_safe?

问题描述 投票:1回答:1

一个简化的例子是这样的:

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_tagshtml_safe这样做的正确方法是什么?

ruby-on-rails ruby xss
1个回答
2
投票

这是我从@ 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

© www.soinside.com 2019 - 2024. All rights reserved.