Могу я использовать ActionView:: Помощники:: SanitizeHelper#sanitize на вводимом пользователем тексте, который я планирую на показе другим пользователям? Например, это правильно обработает все случаи, описанные на этом сайте?
Кроме того, документация упоминает:
Обратите внимание на то, что очистка, обеспеченная пользователями текст, не гарантирует, что получающаяся разметка допустима (соответствующий типу документа) или даже правильно построенный. Вывод может все еще содержать, например, незавершенный’ <’, ’>’, ’&’ символы и путают браузеры.
Что лучший способ состоит в том, чтобы обработать это? Передайте санированный текст через Hpricot
перед отображением?
Наилучший способ действий зависит от двух вещей:
Как правило, я не разрешаю своим пользователям вводить html - вместо этого я позволяю им вводить текстиль.
На rails 3.x:
Пользовательский ввод дезинфицирован по умолчанию. Вам не нужно ничего делать, если вы не хотите, чтобы ваши пользователи могли отправлять HTML-код. В таком случае продолжайте читать.
Этот railscast касается XSS-атак на рельсы 3.
На рельсы 2.x:
Если вы не разрешаете какой-либо HTML-код от своих пользователей, просто защитите свой вывод с помощью метода h
, например:
<%= h post.text %>
Если вы хотите, чтобы ваши пользователи отправляли HTML-код: вы можете используйте метод rails sanitize
или HTML :: StathamSanitizer