Последствия для безопасности использования CKEditor - PullRequest
1 голос
/ 15 марта 2011

Я только что внедрил CKEditor для ввода расширенного текста в своем приложении, и я думаю, что возможность пользователя вводить что-либо может представлять угрозу безопасности.

На данный момент у меня самая простая реализация - CKEditor находится в форме, входные данные сохраняются в базе данных как часть update_attributes, и другие люди могут просматривать выходные данные как html_safe.

Почему-то вышеупомянутое не звучит хорошо для меня, хотя и работает. Правильно ли я считаю, что существуют риски для вышеуказанного подхода? Есть ли более безопасный способ сделать это, чтобы заблокировать атаку через редактор?

1 Ответ

1 голос
/ 15 марта 2011

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

html_safe не предназначен для удаления HTML или очистки для вас. См. Статью Иегуда Каца на ActiveSupport::SafeBuffer. Он предназначен для предотвращения «небезопасной» разметки, помечая строку как безопасную, если она есть (и кодируя ее в сущности HTML, чтобы сделать ее безопасной).

В ActionView::Helpers::SanitizeHelper есть помощники по санитарии, которые вы можете использовать для очистки отображаемого содержимого, но вы можете очистить его до его поступления в базу данных.

Если вы откажетесь от возможности вставки CSS, Javascript или iframe, у вас все будет хорошо. Если вы не знаете, что делают ваши пользователи, уберите также теги <img>. И если вы действительно параноик, вам следует рассмотреть возможность использования Уценка , Текстиль или другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...