Я выполняю предоставленный пользователем код JavaScript внутри iframes.Возможно, что исполняемый код был представлен другим пользователем, поэтому его нужно как можно больше помещать в песочницу.Атрибут sandbox в iframe очень помогает, равно как и использование Content-Security-Policy для него.
Однако мне все еще нужен способ предотвратить зависание вредоносного кода на сайте.
Я вижу две возможности, но не знаю, как заставить их работать:
1: Весь код в iframe запускается в Worker, выделенном для этого iframe.К сожалению, код в iframe должен позволять изменять HTML, содержащийся в iframe.Изменив его так, чтобы он загружал другой скрипт, код мог бы эффективно вырваться из рабочего.
2: код действительно выполняется в основном потоке, но за работой наблюдает рабочий.Этот работник может каким-то образом определить, когда веб-сайт заблокирован из-за iframe, а затем уничтожить только те сценарии, которые виноваты.