Вопрос

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

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

Это было полезно?

Решение

Я думаю, что здесь будет работать вспомогательный метод h:

<%= h @user.profile %>

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

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

Другие советы

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

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

и действительно возиться с вашим макетом.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top