Подтвердить вводимое пользователем HTML - PullRequest
0 голосов
/ 28 февраля 2012

Я ищу способ проверки введенного пользователем HTML, похожий на тот, который вы увидите в форме комментария. Пользовательский ввод должен быть ограничен самыми основными тегами, такими как p, ul, li, div, img. Единственный допустимый атрибут - это стиль.

Проверка может происходить на стороне клиента через Javascript или на стороне сервера через Ruby. Я надеюсь найти библиотеку Javascript, которая может сделать это, или, по крайней мере, найти несколько RegExes для этого.

Спасибо за ваши предложения.

1 Ответ

0 голосов
/ 28 февраля 2012

Вы можете использовать Sanitize для фильтрации HTML.

Используя элементы примера, которые вы перечислили в своем вопросе, вы использовали бы что-то подобное в своем коде проверки:

Sanitize.clean(html,
    :elements => ['p', 'ul', 'li', 'div', 'img'],
    :attributes => {'
        'all' => ['style']
    }
)

Как я уже упоминал в моем комментарии выше, использование атрибута style может быть опасным, особенно если вы разрешите теги <a>, так как они открывают вам атаки clickjacking , если пользователь создает невидимую ссылку, которая охватывает всю страницу.

Если вы хотите разрешить теги <a>, я бы рекомендовал полностью запретить style и, возможно, добавить rel=nofollow к предоставленным пользователем ссылкам:

Sanitize.clean(html,
    :elements => ['p', 'ul', 'li', 'div', 'img', 'a'],
    :add_attributes => {
      'a' => {'rel' => 'nofollow'}
    }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...