Насколько хороший направляющие, санируют () метод?

Могу я использовать ActionView:: Помощники:: SanitizeHelper#sanitize на вводимом пользователем тексте, который я планирую на показе другим пользователям? Например, это правильно обработает все случаи, описанные на этом сайте?

Кроме того, документация упоминает:

Обратите внимание на то, что очистка, обеспеченная пользователями текст, не гарантирует, что получающаяся разметка допустима (соответствующий типу документа) или даже правильно построенный. Вывод может все еще содержать, например, незавершенный’ <’, ’>’, ’&’ символы и путают браузеры.

Что лучший способ состоит в том, чтобы обработать это? Передайте санированный текст через Hpricot перед отображением?

14
задан John Topley 7 June 2010 в 07:57
поделиться

1 ответ

Наилучший способ действий зависит от двух вещей:

  • Ваша версия rails (2.x или 3.x)
  • Должны ли ваши пользователи вводить any html вообще на входе или нет.

Как правило, я не разрешаю своим пользователям вводить html - вместо этого я позволяю им вводить текстиль.

На rails 3.x:

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

Этот railscast касается XSS-атак на рельсы 3.

На рельсы 2.x:

Если вы не разрешаете какой-либо HTML-код от своих пользователей, просто защитите свой вывод с помощью метода h , например:

<%= h post.text %>

Если вы хотите, чтобы ваши пользователи отправляли HTML-код: вы можете используйте метод rails sanitize или HTML :: StathamSanitizer

4
ответ дан 1 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: