Разрешено ли вставлять файл javascript с удаленного сервера на страницу? - PullRequest
0 голосов
/ 13 января 2012

Я разрабатываю расширение Chrome для клиента, который хочет, чтобы я встраивал удаленный файл javascript в определенные страницы.

Это даже разрешено?например, я знаю, что в Firefox такое расширение не будет одобрено AMO.

И если это разрешено, каков наилучший способ сделать его максимально безопасным?(уже использует https, чтобы отрицать человека в середине атаки)

Спасибо всем заранее:)

1 Ответ

5 голосов
/ 13 января 2012

Это не редкость, некоторые расширения делают это, поэтому я не ожидаю, что вас отвергнут, если вы будете осторожны. Однако следите за новыми изменениями CSP (Content Security Policy), которые могут повлиять на эту функциональность в будущем: https://mikewest.org/2011/10/secure-chrome-extensions-content-security-policy

На данный момент есть несколько способов сделать это:

1) Вы можете использовать XMLHttpRequest на своей фоновой странице для загрузки кода и добавить его на веб-страницу с помощью chrome.tabs.executeScript.

2) Вы можете сделать то же самое из скрипта контента, потому что скрипты контента также могут использовать междоменный XMLHttpRequest.

3) Вы можете создать скрипт содержимого, который создает элемент на странице с атрибутом «src», указывающим на внешний скрипт.

Дополнительная безопасность

Чтобы сделать его максимально безопасным, ключевым был бы https. Вы можете обеспечить дополнительный уровень безопасности, фактически кодируя или подписывая скрипт. Например:

1) Создайте пару открытый / закрытый ключ, открытый ключ включен в расширение, а закрытый ключ используется для кодирования сценария, когда он будет готов.

2) Завершите код скрипта на стороне сервера, затем закодируйте его с помощью закрытого ключа.

3) На стороне расширения загрузите скрипт «document», затем расшифруйте его с помощью открытого ключа. Убедитесь, что это допустимый файл сценария.

Таким образом, вы будете принимать и выполнять только те сценарии, которые, как вы знаете, были подписаны владельцем закрытого ключа.

...