Попытка отсканировать скрипт, чтобы определить, использует ли он какой-либо из этих интерфейсов, - неправильный подход. Слишком легко избежать путаницы, как вы, кажется, открываете. Это в основном небезопасно: нет способа заставить его работать.
Вот лучший подход. Требуйте, чтобы автор сценария включил манифест, который объявляет, к каким специальным API ему нужен доступ. Затем запустите сценарий в безопасной изолированной программной среде Javascript, которая предоставляет только те разрешенные API и API, которые были запрошены, но не более того. Если сценарий не запрашивает GM_openSQL_Connection
в своем манифесте, не предоставляйте этот API сценарию.
Поскольку Javascript - это динамический язык, который допускает внесение исправлений обезьянами и неограниченный доступ к глобальному объекту, для создания защищенной изолированной программной среды, ограничивающей доступ к API-интерфейсам сценария, требуются некоторые действия. Поэтому я рекомендую вам использовать существующее решение для песочницы. Один из подходов состоит в том, чтобы запустить пользовательский сценарий в изолированной программной среде и предоставить изолированному программному коду библиотеку, заполненную заглушками для чувствительных API-интерфейсов, где заглушки просто используют postMessage
для отправки RPC-запроса вашему коду расширения. Это позволяет избежать наличия ссылок, которые пересекают границу песочницы, что хорошо (в зависимости от технологии песочницы), когда ссылки такого типа обычно несут существенный потенциал для уязвимостей безопасности.
Затем вы можете отправлять предупреждения пользователей на основе содержимого манифеста. Важно: пожалуйста, подумайте об этом с точки зрения пользователя. Смогут ли обычные пользователи разобраться в предупреждениях? Смогут ли они принимать разумные решения? Будут ли пользователи лучше принимать правильные решения, чем вы? Будут ли пользователи перегружены постоянными предупреждениями, и они просто начнут игнорировать их и нажимать «ок» (эффект крика-волка)?
Для получения информации о технологии песочницы Javascript, пожалуйста, прочитайте следующий вопрос по IT-безопасности: Как сканировать Javascript на наличие вредоносного кода? . В будущем вы можете получить ответы на этот вопрос на сайте IT Security.