Я работаю над унаследованным веб-приложением, в котором используется как расширенный текстовый редактор Summernote , который может сохранять отформатированные заметки на наш сервер, так и множество встроенных Javascript.
Summernote может разрешать написание HTML / CSS / JS через представление «код», но, похоже, не имеет встроенной поддержки для предотвращения XSS. Если вы, например, зайдете на их домашнюю страницу, перейдите к просмотру кода для редактора и напишите <script>alert(0)</script>
и вернете его обратно к просмотру текста, он выполнит скрипт. Мы хотим, чтобы пользователи могли делать такие вещи, как жирный контент, вставлять гиперссылки и изображения и т. Д., Но без JS или, возможно, даже CSS.
Мы только что обнаружили, что разработчик, который изначально реализовал защиту XSS для этих редакторов в приложении, сделал немного слабую работу, и теперь пытается убедиться в этом. Пока что, похоже, у меня есть варианты: (a) создание / поиск белого списка, который будет анализировать HTML Summernote и разрешать только определенные элементы HTML в поле; и / или (b) реализация заголовков CSP и перемещение всех встроенных JS / CSS в отдельные файлы.
Учитывая, что только эти редакторы должны иметь возможность возвращать действительный HTML пользователям, на остальной части сайта мы можем и полностью очищаем контент, возможно ли отключить встроенный JS / CSS только в разделе HTML-страницы (Т.е. область, в которую мы загружаем содержимое редактора)? Или это не вариант / возможность быть подверженным обходным путям?
Редактировать : Так же, как примечание, я признаю, что текстовый редактор не может предотвратить XSS, если мы решили сохранить контент на сервер, так как он работает на стороне клиента. Я имел в виду, что не могу найти ресурсы / предложения относительно белых списков HTML или пример очистки для различных серверов через их сайт.
Редактировать 2 : Определенно будет реализовывать какой-то белый список, чтобы быть на безопасной стороне (возможно, CSP также, но рефакторинг будет головной болью), но все же хотите знать, возможно ли это Т.е. между двумя разделами HTML, возможно ли заблокировать все встроенные JS & CSS?