たとえば、任意のWebページ(iGoogle、Pageflakesウィジェットの一種)に埋め込むことを目的とした一連のJSウィジェットを開発しているとします。
クライアントは、スクリプトタグを含めることでウィジェットを埋め込むことができます。
<div id="widgetHost">
<script src="http://fantasticwidgets.net/awesomeWidget.js"></script>
<script src="http://fantasticwidgets.net/awesomeWidgetAgain.js"></script>
</div>
現在、これらのウィジェットは共通ライブラリ(jQuery、アンダースコア、およびmyCommon.jsなどの独自のライブラリ)に依存しています。
理想的には、これが起こるべきことです:
- ウィジェットのbootstraperjsが最初にダウンロードされます
- Widgetのbootstraperjsは、必要なバージョン(jQuery v1.6.2がページにロードされているかどうか、myCommon v1.1など)でこれらのライブラリファイルの存在を確認します。
- それらのいずれかがロードされている場合は、それらのファイルを要求せず、不足しているスクリプトのみをダウンロードしてください。
- 次に、これらのスクリプトはWebサービスを呼び出し、魔法をかけ、ページにHTMLをレンダリングします。
懸念事項:すでにロードされているファイルをチェックすると、スクリプトのなりすましの脆弱性が発生します。悪意のあるユーザーは、ロードされたライブラリをスプーフィングし、機密情報を盗んだり、その他の悪いことをしたりするために使用します。
解決策:ロードされたライブラリをチェックせず、常にすべてを再送信してください。これはまだ防弾ではありませんが、彼が再びなりすましをしなければならないので、少なくともそれを少し難しくします。ただし、これにより帯域幅が無駄になり、読み込み時間が長くなります。
質問:ロードされたファイルが、できればクライアント側で改ざんされているかどうかを検出することは可能ですか?または、サーバー側のソリューションを含める必要がありますか?それが重要な場合は、サーバー側でASP.Netを実行しています。