最近、GoogleアナリティクスはJSONPリクエストを使用して、コールバック関数を介してga.jsをユーザーのウェブページに読み込みます。ウィキペディアによると、JSONPは「任意のコンテンツをWebサイトに挿入する」ことができます。
これはどういう意味ですか?ローカルストレージ、RAM(秘密鍵など)の変数にアクセスする方法はありますか?攻撃は偽のダイアログなどのUI攻撃に限定されていますか?
postMessage
を介してiframeのga.jsに投稿する、より高度で読みやすいJavaScriptスクリプトをユーザーのWebサイトに配置する方がはるかに良いのではないでしょうか。サイトの監査で、リモートJavaScriptを保護しながらどの情報が送信されているかを明確にしながら、この方法で何かを投稿できるようです。
https://developers.google.com/analytics/devguides/collection/gajs/https://en.wikipedia.org/wiki/JSONP#Security_concerns
可能な解決策(必要に応じて、質問の形式で)
外部ドメインからのスクリプトを含めるときはいつでも、そのドメインを信頼しています。例えばサイトがexample.com
で、ホームページに次のコードがある場合
<script src="//example.edu/tracking_script.js"></script>
その場合、example.com
は、example.edu
内で悪意のある行為を行わないようにtracking_script.js
を完全に信頼しています。 example.edu
はクライアント側のスクリプトを完全に制御でき、example.com
でホストされているクライアント側のスクリプトが実行できるすべてのことを実行できます。
同じことがGoogleアナリティクスにも当てはまります。外部js
参照を作成するスクリプトコードをページに追加します。グーグルが望めば、彼らはあなたのページにクライアント側で何かをするために彼らのスクリプトを適応させることができます。 Googleアナリティクスのウェブサイトが侵害されている場合も同様です。攻撃者はアナリティクスを使用してすべてのドメインを制御します。
悪意のあるものを割り引くと、Googleにとっての利点は、ウェブマスターが自分の側で更新を行う必要なく、アナリティクスのクライアント側コードを更新できることです。そのため、サーバー側の機能を更新する場合、クライアント側の対応物を適切に更新でき、世界中のすべてのサイトが訪問者に対して新しいクライアント側コードを自動的に実行します。
postMessage
は、ドメインとGAの間のセキュリティ境界を維持しますが、サーバー側の更新後にGAが機能するために必要なクライアント側のスクリプトの更新を許可しません。 (安全なクロスドメイン通信にIFrameは必要ないことに注意してください [〜#〜] cors [〜#〜] Google側で有効にすると、サイトがHTTPを送信できるようになりますPOST各ページの訪問を登録するリクエスト。)
Google製品を使用する場合、スクリプト参照を含めてかなり安全になります。そのため、これを別の方法で行う必要はほとんどありません。しかし、あまり知られていないエンティティへのスクリプト参照があり、そのセキュリティがGoogleの標準に完全に準拠していない可能性があることは、懸念の原因となる場合があります。そのような場合は、JSONPの技術ではなく、より安全なクライアント側の技術に依存するのが賢明でしょう。