Предотвращение опасного ввода пользователя от django tinymce - PullRequest
1 голос
/ 26 мая 2019

Допустим, мы хотим использовать tinymce, чтобы позволить пользователям вводить ввод в формате HTML.Пакет django-tinymce представляет собой удобное решение.

Но чтобы отобразить это позже как вывод, мы должны использовать {{userinput |safe}}, чтобы отобразить его.Но знаем ли мы на самом деле, что исходный ввод пользователя ... безопасен?

Какие конкретно типы вредоносных HTML-тегов нам нужно опасаться и дезинфицировать?Какой была бы разумная стратегия, чтобы не убирать законные теги, которые использует tinymce, при защите будущих пользователей веб-сайта, которым будет представлен «безопасный» ввод данных пользователем?

1 Ответ

0 голосов
/ 28 мая 2019

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

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

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

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

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