Внедрение скрипта на mail.google.com с использованием расширения chrome - PullRequest
3 голосов
/ 19 июня 2020

Я работаю над расширением chrome, в котором я заменяю функцию navigator.credentials.create веб-API chrome на собственный обработчик. navigator.credentials.create вызывается, когда пользователь инициирует регистрацию 2FA для ключа безопасности.

Пользовательский обработчик работает на facebook.com, но не работает на mail.google.com.

Я приложил минимальный код расширения, над которым я работаю. Этот сценарий внедряется на каждую страницу и может быть подтвержден с помощью «внедренного сценария» консоли. В моем примере приложения я распечатал консольную инструкцию «In extension's create» в пользовательском обработчике navigator.credentials.create. Его следует распечатывать всякий раз, когда пользователь инициирует процесс регистрации 2FA. Он работает для facebook, но не работает на https://myaccount.google.com/. Я убедился, что скрипт вставлен во все фреймы, доступные на сайте. Я также подтвердил, что mail.google.com не использует сервис-воркеров для вызова navigator.credentials.create API.

content_script. js

const webauthnInject = document.createElement('script');
webauthnInject.type = 'text/javascript';
webauthnInject.src = 'chrome-extension://' + chrome.runtime.id + '/inject_webauthn.js';
document.documentElement.appendChild(webauthnInject);

inject_webauthn. js

(() => {

    console.log("injected script");

    const real_create = navigator.credentials.create;
    navigator.credentials.create = async function() {
        console.log("In extension's create");
        let res = await real_create.bind(navigator.credentials)(arguments[0]);
        return res;
    };

})();

манифест. json

{
  "manifest_version": 2,
  "name": "sample app",
  "description": "A Sample app",
  "version": "1.0.2",
  "minimum_chrome_version": "36.0.1985.18",
  "content_scripts": [
    {
      "all_frames": true,
      "match_about_blank": true,
      "matches": [
        "https://*/*",
        "http://*/*"
      ],
      "exclude_matches": [
        "https://*/*.xml"
      ],
      "run_at": "document_start",
      "js": [
        "content_script.js"
      ]
    }
  ],
  "background": {
    "persistent": false,
    "scripts": [
      "background.js"
    ]
  },
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

  "permissions": [
    "tabs",
    "storage",
    "https://*/*",
    "http://*/*"
  ],
  "web_accessible_resources": [
    "inject_webauthn.js"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...