Богатый текстовый редактирование, предотвратить встроенный код JavaScript
-
01-10-2019 - |
Вопрос
Я сделал сайт, используя знаменитую структуру Symfony. Я хотел добавить на него богатую редактирующую функцию. И я нашел редактор Tinymce. Но там пробил проблему: как насчет пользователя встроить код JavaScript в контент? такие как оповещение («Hello World»).
Я протестировал WordPress, который является очень известным программным обеспечением блога. Это сталкивается с такой же проблемой. пример.
Это не имеет большого значения, если кто-то встроен скрипт предупреждения. Но что, если они встроили какой-то опасный код? Вы столкнулись с той же проблемой? Должен ли я использовать Markdown вместо HTML? Любой хороший виджет для редактирования Markdown?
Решение
Не допускайте встроенный JavaScript на вашем входе пользователя. Это легко очистить либо на клиенте, либо на сервере. Имейте «Белый список» HTML-тегов, которые вы поддерживаете, и удалите любые атрибуты слушателя событий от того, что вы позволяете.
Другие советы
Хорошей идеей является использование существующей библиотеки для очистки вашего пользовательского ввода, проекта очистителя HTML: http://htmlpurifier.org/ кажется поддерживаемым и хорошо сделанным.