Безопасное связывание сгенерированного пользователем контента при экранировании символов HTML в Rails - PullRequest
3 голосов
/ 19 августа 2011

Rails 3.1 удаляет метод auto_link.Он продолжает существовать в плагине, однако он никогда не работал должным образом для UGC.

После запуска auto_link вам нужно будет вызвать html_safe для отображения ссылок, в результате чего любой UGC HTML также будетотображается как есть.

Существует ли библиотека, которая будет html_escape или дезинфицировать содержимое и безопасно связать текст?Это похоже на общий случай использования и немного труден для реализации, поэтому я полагаю, что должно быть что-то там.

Например:

<<script> do bad things </script> <a href="http://www.google.com?q=viagra&page=1" rel="nofollow">http://www.google.com?q=viagra&page=1</a>

Я хотел бы закончить с:

&lt;script&gt; do bad things &lt;/script&gt; <a href='http://www.google.com?q=viagra&amp;page=1'>http://www.google.com?q=viagra&amp;page=1</a>

1 Ответ

0 голосов
/ 08 декабря 2012

Redcloth (http://redcloth.org/) может быть тем, что вы ищете. Он не позволяет вам использовать простой HTML (что, кстати, не очень хорошая идея), но на самом деле он поддерживает полный текстильный язык разметки, поэтомутакже является гибким. Текстильная ссылка из красной ткани (http://redcloth.org/textile/phrase-modifiers/#links) также показывает, каков синтаксис для ссылок. По сути, вы можете использовать его для очистки любой строки, которую хотите. Я сам использую ее для статей блога с директивой before_safe, поэтому всегдавызывается перед сохранением:

    class Article < ActiveRecord::Base
        before_save :parse_text

        def parse_text
            if RedCloth.nil?
                self.article_text = RedCloth.new(self.article_text).to_html
            end
        end
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...