Как сделать XSS-безопасный браузерный редактор кода
Я хотел бы использовать редактор кода на основе браузера, такой как Monaco или Ace, в своем приложении, чтобы позволить пользователям писать некоторый код в браузере, который будет выполняться другими пользователями. Вы можете представить себе jsfiddle или подобное. Однако я не хочу открывать уязвимости межсайтового скриптинга. Я не нахожу много о том, как правильно реализовать эти инструменты в приложении и предотвратить XSS.
Есть ли способ "песочницы" javascript, написанный в этих инструментах, когда он работает? Как инструменты, такие как JSFiddle, CodePen, онлайн-редакторы и т. Д., Защищают от вредоносных скриптов? В целом, какие методы следует использовать для предотвращения уязвимостей XSS при использовании редактора кода на основе браузера в моем приложении?
1 ответ
Обычно эти инструменты запускают скрипт в другом домене. Таким образом, они (преднамеренно) уязвимы для межсайтовых сценариев, но они помещают их в изолированную среду, используя ту же политику происхождения. Это самый простой и легкий способ сделать это. Даже если на сайте редактора есть логины и т. Д. Сценарии, выполняемые в этом домене "песочницы", заблокированы той же политикой происхождения, что и доступ к любому контенту в основном домене, и поэтому XSS довольно бесполезен.