веб-расширение браузера может предоставить пользовательский интерфейс для взаимодействия с пользователем, например (боковые панелиsidebar_action), или маленькие значки, которые позволяют открывать всплывающее окно при нажатии browser_action).
Однако я хотел бы, чтобы мое расширение предоставляло пользовательский интерфейс, отображаемый непосредственно на веб-странице и, следовательно, в центре открытой в данный момент вкладки. Прямо внутри вкладки. Чтобы отобразить что-либо внутри вкладки, я использовал контент-скрипт и модифицировал веб-страницы DOM, но мне кажется, что это небезопасный метод, поскольку он открыл бы возможность для кода ненадежной веб-страницы повлиять пользовательский интерфейс (например, он может просто удалить созданный пользовательский интерфейс или, что еще хуже, изменить его, следовательно, злонамеренно взаимодействовать при общении между моим content-script(web extension) и пользователем.
Следовательно, документация по хрому о контент-скрипты предупреждает:
Stay secure
While isolated worlds provide a layer of protection, using content scripts can create vulnerabilities in an extension and the web page.
На этот вопрос требуется ответ, если,
а) невозможно иметь пользовательский интерфейс в области содержимого веб-страницы, на который также не может повлиять javascript веб-страницы (т. е. DOM всегда можно изменить как для сценария содержимого, так и для javascript веб-страницы) или
б) есть способ представить пользовательский интерфейс внутри области содержимого веб-страницы, в то время как «безопасным способом» (имеется в виду ненадежный javascript веб-страницы, который не может повлиять на отображаемый пользовательский интерфейс).
@wOxxOm iframe также ненадолго пришел мне в голову как решение, но как мне убедиться в этом (iframe действительно виден и не скрыт под другими элементами DOM). Не сможет ли javascript ненадежной веб-страницы полностью удалить iframe из DOM (а затем переделать поддельную версию пользовательского интерфейса)?
Отсутствие надежного способа отображения (например, оверлейного DOM) для веб-расширений кажется серьезной проблемой. Поскольку chromium даже решил не предоставлять sidebar-action, а вместо этого мотивировать вас сразу же вставлять на веб-страницы DOM, эта проблема безопасности весьма обескураживает.
Вам придется проверить это вручную, например. с помощью MutationObserver и IntersectionObserver.
@wOxxOm. ваши комментарии, кажется, показывают путь к возможному решению/ответу. Обязательно попробую. С наблюдателями кажется, что злоупотребление/атака со стороны javascript веб-страниц может быть достаточно уменьшена, в то время как iframe уже отключил большой доступ в первую очередь. отличный!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Добавьте элемент iframe на страницу с src, указывающим на html-файл в вашем расширении, объявленном через web_accessible_resources. Эта страница будет изолированной страницей расширения с полными разрешениями (например, фоновая страница или всплывающее окно browserAction). Вы можете найти подробные существующие ответы и даже учебные пособия для этого подхода.