Вы всегда должны заботиться о дезинфекции ввода пользователя. В вашем случае, удалив все нежелательные теги HTML (как, например,), независимо от того, откуда они пришли.
html_safe
не предназначен для удаления HTML или очистки для вас. См. Статью Иегуда Каца на ActiveSupport::SafeBuffer
. Он предназначен для предотвращения «небезопасной» разметки, помечая строку как безопасную, если она есть (и кодируя ее в сущности HTML, чтобы сделать ее безопасной).
В ActionView::Helpers::SanitizeHelper
есть помощники по санитарии, которые вы можете использовать для очистки отображаемого содержимого, но вы можете очистить его до его поступления в базу данных.
Если вы откажетесь от возможности вставки CSS, Javascript или iframe, у вас все будет хорошо. Если вы не знаете, что делают ваши пользователи, уберите также теги <img>
. И если вы действительно параноик, вам следует рассмотреть возможность использования Уценка , Текстиль или другие.