Безопасность интерактивного редактора

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

В сайтах и веб-приложениях используется формат HTML для отображения содержимого. Соответственно, если пользователю нужно предоставить возможность добавления статей на сайт, ему предоставляется редактор HTML. Это может быть интерактивный редактор, похожий на Word, который не требует от пользователя знания HTML-тегов, но внутри он будет всё равно являться редактором HTML.

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

У нас есть решение этой проблемы — для хранения статей и другого подобного содержимого мы используем формат ProseMirror, который при необходимости легко преобразуется в HTML, но не даёт возможность произвольной вставки скриптов в код.