2008-10-18 3 views
3

Какое оптимальное решение для дезактивации выходного HTML в Rails (чтобы избежать атак XSS)?Санизировать вывод в Rails

У меня есть два варианта: плагин white_list или метод sanitize от Sanitize Helper http://api.rubyonrails.com/classes/ActionView/Helpers/SanitizeHelper.html. Для меня до сегодняшнего дня плагин white_list работал лучше, и в прошлом Sanitize был очень глючным, но, как часть Core, вероятно, он будет разрабатываться и поддерживаться некоторое время.

ответ

1

Я думаю, что метод ч помощник будет работать здесь:

<%= h @user.profile %> 

Это избежит угловые скобки и, следовательно, нейтрализовать встроенный JavaScript. Конечно, это также устранит любое форматирование, которое могут использовать ваши пользователи.

Если вы хотите форматировать, возможно, посмотрите на уценку.

0

Лично я считаю, что это не небольшое решение принять любую запись HTML в любом веб-приложении. Вы можете проверить белые/черные списки тегов столько, сколько вам угодно, но если вы не испытывать для правильного вложенности, кто-то может войти в серию закрывающих тегов, например

</td></tr></span></div> 

и действительно бардак с макетом.

Обычно я предлагаю людям что-то вроде Textile, чтобы ввести их разметку, так как я лучше трачу свое время на бизнес-логику, чем на разбор HTML.

Конечно, если эта текстовая запись является более фундаментальной для вашего приложения (как, например, для stackoverflow), то вам, вероятно, следует уделять больше внимания ручной руке.

 Смежные вопросы

  • Нет связанных вопросов^_^