JavaScript получает список внешних скриптов (например, расширений)
Можно ли получить список всех скриптов, введенных браузером? Или, по крайней мере, обнаружить их как-нибудь. Я имею в виду, что иногда в Windows существуют различные вирусы, которые внедряют скрипты в модификацию fly, например. нажмите действия, чтобы отобразить рекламу. Я пишу продвинутый веб-сайт, поэтому я хотел бы предупредить пользователя о других сценариях, которые, скорее всего:
произойдет сбой, так как мое веб-приложение модифицирует базовые API-интерфейсы браузера, такие как document.getElement* или даже слушатели
может сделать веб-приложение нестабильным, а в худшем случае вызвать его падение.
может быть превышение производительности
Я говорю также о скриптах, изменяющих контент сайта, например. Понифи или номера XKCD. Я знаю о navigator.plugins, но это не то, что я ищу.
1 ответ
На самом деле, нет. Я имею в виду, вы могли бы сделать:
document.getElementsByTagName('script');
И получить все теги сценариев и проверить их src
атрибут, но это не так просто. Можно сделать запрос AJAX для файла JavaScript, а затем eval(ajaxResult)
выполнить этот код. Ваш браузер не может узнать, откуда появился этот код, поскольку это всего лишь строка.
Есть много способов выполнить javascript, и очистить любой след, нет никакого способа покрыть их все.
РЕДАКТИРОВАТЬ: я пропустил ключевую фразу "скрипты, введенные браузером":)
По крайней мере, в Chrome некоторые расширения, похоже, вводят теги скрипта. Хотя, кажется, они не размечены каким-либо особым образом. Фильтровать их может быть сложно. Возможно, если вы добавите class
к тегам сценария, которые, как вы знаете, должны быть там, и вы найдете тег сценария, у которого нет этого класса, тогда вы знаете, что это может быть сценарий расширения.
Я также не уверен, что расширение должно вставлять тег сценария, чтобы делать что-то на странице. Я думаю, что у него есть способы взаимодействия со страницей непосредственно из кода расширения. Не уверен, хотя. Требуется больше исследований. И это, вероятно, отличается для разных браузеров.
Лично я считаю, что защита вашего сайта от собственных браузерных расширений - это глупая задача. Если кто-то хочет запутать свой собственный опыт просмотра причудливыми способами, вы не обязаны держать его за руку. И вам будет очень трудно определить, как расширение может взорвать все.