Facebook のステルス防御: デベロッパー ツールの無力化
ブラウザーに組み込まれたデベロッパー ツールを無効にすることは技術的に不可能であると信じられているにもかかわらず、Facebook はこの概念を否定しました。横行する詐欺や悪意のあるアカウント ハッキングに対抗するために、Facebook は大胆な解決策を講じました。
Facebook が不可能を達成した方法
Facebook のアプローチには、ラップされたコード スニペットを通じてすべてのコンソール コマンドを傍受することが含まれます。特殊な Chrome 機能内で。この関数を変更することで、Facebook はコンソール入力を効果的に null または void にレンダリングします。
技術詳細
Chrome はコンソール コマンドを次の構造内にカプセル化します:
with ((console && console._commandLineAPI) || {}) { <code goes here> }
Facebook は、例外をトリガーするために console._commandLineAPI プロパティを巧妙に再定義しています。
Object.defineProperty(console, '_commandLineAPI', { get : function() { throw 'Nooo!' } })
これだけではコンソールを完全にブロックするわけではありませんが、防御メカニズムの中核を形成します。
セキュリティと機能
クライアント側のハッキング対策には問題が生じる可能性がありますが、Facebook の戦略は、ユーザーが無意識のうちにコンソールで悪意のある JavaScript コードを実行するソーシャル エンジニアリング攻撃を特にターゲットにしています。
エピローグ
Facebook の革新的なアプローチにもかかわらず、Chrome チームはこれをバグとして分類し、機能を無効にしました。ただし、Facebook はユーザーを self-xss 脆弱性から保護するために追加の保護手段を実装しました。
以上がChrome の制限にもかかわらず、Facebook はどのようにして開発者コンソールを沈黙させたのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。