Фильтрация Javascript TinyMCE перед выводом - PullRequest
1 голос
/ 01 мая 2019

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

<p>&lt;script&gt;console.log("mce");&lt;/script&gt;</p>

Итак, javascript уже экранирован.Моя проблема в том, что если злонамеренный пользователь обходит TinyMCE и просто отправляет необработанные данные в textarea с неэкранированным javascript.

Когда другой пользователь должен отобразить это, как я могу безопасно вывести его?Я не могу использовать htmlspecialchars, так как я хотел бы сам контент html.Я мог бы вручную проверить серверную часть (Laravel) на наличие тегов <script></script и переписать их, но как насчет встроенного JavaScript?

1 Ответ

2 голосов
/ 01 мая 2019

Вы никогда не можете предполагать, что данные, предоставленные вам на стороне клиента, являются «чистыми» или «безопасными». Как вы правильно поняли, гнусные люди могут обойти ваш интерфейс и все его проверки.

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

Однако, независимо от внешнего интерфейса, вам всегда нужно повторно проверять отправленный контент на сервере, чтобы быть в безопасности. Обойти эту потребность просто невозможно.

Существует много разных библиотек, которые вы можете использовать на стороне сервера для выполнения такого рода проверки / очистки, включая очиститель HTML, который упоминается в комментарии к вашему исходному сообщению.

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