Как очистить пользовательский HTML-код в ruby ​​на рельсах - PullRequest
1 голос
/ 05 октября 2010

Я храню сгенерированный пользователем HTML-код в базе данных, но некоторые коды не работают (без конечных тегов), поэтому, когда этот код испортит весь рендеринг страницы.

Как я могу предотвратить подобное поведение с ruby ​​на рельсах.

Спасибо

Ответы [ 4 ]

2 голосов
/ 05 октября 2010

Это не так сложно сделать с правильным HTML-анализатором, таким как Nokogiri , который может выполнять очистку как часть метода обработки:

bad_html = '<div><p><strong>bad</p>'

puts Nokogiri.fragment(bad_html).to_s
# <div><p><strong>bad</strong></p></div>

После правильного анализа у вас должны быть полностью сбалансированные теги.

0 голосов
/ 01 июня 2012

Проверьте Люфа , библиотека для очистки HTML, основанная на Nokogiri.Это также удалит потенциально небезопасный HTML, который может внедрить вредоносный скрипт или внедрить объекты на страницу.Вам также следует удалить блоки стилей, которые могут испортить разметку на странице.

0 голосов
/ 05 октября 2010

Попробуйте использовать функцию escape h () в ваших шаблонах erb для очистки. Это должно сделать трюк

0 голосов
/ 05 октября 2010

Мой гугл-фу показывает на удивление немного хитов, но вот лучший из них:)

Действительный правильно сформированный HTML

...