1

chrome拡張機能を交換navigator.credentials.create()して使用しています。2 要素認証用の「セキュリティ キー」を登録します。私の置換スクリプトは、Facebook や GitHub などの一部の Web サイトでは機能しますが、Gmail、Twitter、Amazon AWS などの一部の Web サイトでは機能しません。問題は何ですか?なぜここに矛盾があるのですか?navigator.credentials.get()navigator.credentials.create()

content_script.ts

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

inject_webauthn.ts

(() => {
cKeyCredentials.create = async (options: CredentialCreationOptions): Promise<Credential | null> => {//code}

cKeyCredentials.get = async (options: CredentialRequestOptions): Promise<Credential | null | any> => {//code}

Object.assign(navigator.credentials, cKeyCredentials);
})();

マニフェスト.json

"content_scripts": [
    {
      "all_frames": true,
      "matches": [
        "https://*/*",
        "http://*/*"
      ],
      "exclude_matches": [
        "https://*/*.xml"
      ],
      "run_at": "document_start",
      "js": [
        "js/content_script.js"
      ]
    }
  ],
"permissions": [
    "tabs",
    "storage"
  ],
  "web_accessible_resources": [
    "js/inject_webauthn.js",
    "img/*"
  ],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

アップデート

この問題は、wOxxOm と kaiido によって指摘された新しい動的 iframe が原因である可能性があります。だから、私はmutationObserverを使おうとしています

var observer = new MutationObserver(function (mutations) {
    mutations.forEach(function (mutation) {
        [].filter.call(mutation.addedNodes, function (node) {
            return node.nodeName == 'IFRAME';
        }).forEach(function (node) {
            node.addEventListener('load', function (e) {
                console.log('loaded', node.src);
            });
        });
    });
});
observer.observe(document.documentElement, { childList: true, subtree: true });

上記のオブザーバーを content_script.js に追加しました。関連する新しい IFRAME はまだ検出されません。

2FA を開始すると、credentials.create API を呼び出すスクリプトが読み込まれます。挿入されたコード関数がここで呼び出されない理由を見つける方法はありますか? ここに画像の説明を入力

4

0 に答える 0