2011-08-07 11 views
1

私は、どのWebページ(iGoogle、Pageflakesウィジェットのようなもの)に埋め込まれることになっているJSウィジェットの束を開発しているとしましょう。JavaScriptファイルのスプーフィングを検出する

クライアントは、スクリプトタグを含むことにより、ウィジェットを埋め込むことができます。

<div id="widgetHost"> 
    <script src="http://fantasticwidgets.net/awesomeWidget.js"></script> 
    <script src="http://fantasticwidgets.net/awesomeWidgetAgain.js"></script> 
</div> 

は今、これらのウィジェットは、共通のライブラリに依存している( - 例えばmyCommon.jsましょうjQueryのは、アンダースコア、そして私自身のいくつか)。

理想的には、これが起こるべきである:

  • ウィジェットのbootstraper JSは、その必要なバージョンでこれらのライブラリファイルの存在のための最初の
  • ウィジェットのbootstraper jsのチェックをダウンロードされる(jQueryのv1.6.2がロードされているかどうかと言いますページ上にあるかどうか、myCommon v1.1など)
  • これらのファイルがロードされている場合は、これらのファイルを要求しないでください。欠落しているスクリプトのみをダウンロードしてください。
  • これらのスクリプトは、その後、いくつかのWebサービスを呼び出して、いくつかの魔法を行うと、ページ上のHTMLをレンダリング

懸念:すでにロードされたファイルのチェックには、スクリプトのなりすましの脆弱性を紹介します。悪意のあるユーザーは、読み込まれたライブラリを偽装して、機密情報を盗んだり、他の悪いことをしたりします。

ソリューション:ロードされたライブラリをチェックしないで、常にそれらのすべてを再度送信します。これはまだ防弾ではありませんが、少なくとももう一度偽装する必要があるため、少なくとも少し難しくなります。 しかし、これは無駄な帯域幅と負荷時間の増加を引き起こします。

質問それがロードされたファイルは、好ましくは、クライアント側で、改ざんされているかどうかを検出することは可能ですか?それとも、サーバー側のソリューションを含める必要がありますか? ASP.Netはサーバー側で動作しています。

+0

まあ、含まれているスクリプトファイルに含まれている特定の変数にチェックサムを含めることができ、そのチェックサムが現在の状態の変数チェックサムと一致するかどうかを確認できます。 –

+0

人が最初にハイジャックすることができれば、ライブラリが追加される前または後に情報を簡単に盗むことができる。安全にすることはできません。それを安全にするための唯一の方法はiframeです。 – epascarello

+0

皆さん、ご意見をお聞かせください。可能であれば、いくつかの(擬似)コードで? – Mrchief

答えて

2

ここでの唯一の解決策は、「HTTPSを使用してスクリプトを配信する」ことです。悪意のある人が別のドメインのHTTPSコンテンツを使ってユーザーのブラウザキャッシュに悪影響を及ぼすようになる可能性がある場合、ユーザーに配信するページを変更する権限を持つため、すでにゲームオーバーしている。

+0

まあ、私は同意しますが、すべてのクライアントが 'https'を望むわけではありません。その場合、毎回ファイルを提供する方が安全だと思いますよね? – Mrchief

+0

その場合、あなたは何者でも中間者攻撃を防ぐことはできません。スクリプトの要求を傍受できる場合は、スクリプトを変更することができます。スクリプトを傍受することができれば、メインページを傍受して自分のスクリプトを読み込むように変更することもできます。 MITM攻撃を阻止できる唯一のメカニズムは、リモートサーバーのコンテンツ暗号化と認証(どちらもHTTPSによって提供されています)です。 – cdhowie

関連する問題