Как избежать html_safe при использовании gsub для вставки ссылок? - PullRequest
2 голосов
/ 22 апреля 2019

упрощенный пример будет следующим:

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?

1 Ответ

2 голосов
/ 22 апреля 2019

вот что я сделал из предложения @ iceman :

  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 sanitize не работает с символами)

https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...