web-dev-qa-db-ja.com

外部クロスドメインインクルードスクリプト

私のWebアプリケーションの1つに最近脆弱性評価が行われ、その結果の1つはクロスドメインインクルードスクリプトに関するものです。私たちのWebアプリは AddThis のaddthis_widget.jsを使用してFacebook/Twitterなどをブックマークしています。スクリプトのコンテンツを独自のドメインにコピーしてそこから含めるか、スクリプトの再実装することをお勧めします独自のコード内の機能。

これは本当に悪用可能な問題ですか?

5
dorothy

コードがGoogleのCDNなどの大規模なコンテンツ配信ネットワーク(CDN)によって提供されている場合、他の方法でハッキングされる可能性が高くなります。大規模なCDNにはセキュリティに費やすお金があり、CDNがインフラストラクチャの弱点になることはまずありません。

サイトが一定の人気度に達したら、CDNから静的コンテンツを提供する必要があります。次の投稿を検討してください。

jQueryにGoogleのCDNを使用する必要があるのはなぜですか?

CDNの利点は、静的コンテンツを配信している、十分に保守されたサーバーが危険にさらされる可能性が非常に低いことを上回っています。そうは言っても、 Akamai製品に重大な欠陥を見つけました ...

5
rook

はい、セキュリティの問題です。

含まれているJavaScriptはWebサイトのコンテキストで実行されます。つまり、JavaScriptはユーザーが制御できるものはすべて制御できます。

外部JavaScriptファイルは、特に害を及ぼす可能性があります

  • cookieを読み取る(セッションを盗むなど)
  • ユーザー入力を読み取る(例:パスワード入力を読み取る)
  • ユーザーの表示を変更する(例:広告を表示する、フィッシング、改ざんする)
  • ユーザーとしてフォームを実行する(ユーザー情報を変更する、他のユーザーにスパムを送信するなど)
  • 他のサーバーに要求を実行する(たとえば、取得した情報を攻撃者のサーバーに送信する、他のサーバーにDOS /ブルートフォース攻撃を実行するなど)

したがって、次の場合にのみ外部JavaScriptファイルを含める必要があります

  • あなたが害を及ぼさないようにあなたが含めるドメイン/会社を信頼する
  • あなたは彼らを信頼して彼らのサーバーを安全に保つ
  • インクルードにHTTPSを使用して中間者攻撃を回避する

もちろん、外部サーバーからJavaScriptを含める以外にもがあります

  • サーバーの負荷が軽減されます
  • ユーザーが既にそのファイルをキャッシュしている可能性があるため、ユーザーのウェブサイトの読み込みが速くなります。
3
tim

他のサイトからのスクリプトを含めることの主な問題は、悪意のあるコードを含めるようにスクリプトを変更する可能性があることです。

現在、かなり大きな「欠点」がある2つのオプションがあります。

  1. Addthisスクリプトの再実装にはかなりの時間がかかるので、そのようにしたいとは思わないでしょう。また、スクリプトを保守する必要があります。
  2. また、サーバーにコピーを作成する場合、AddThisチームがそのスクリプトを更新すること、および古いバージョンがあるかどうかを確認してから更新する必要があることを確認する必要があります(そうしないと手動で行う必要があります)。何か悪いものがそこに挿入されたかどうかを知る)。

正直なところ、私はAddThisスクリプトを(サーバーから)含めることに固執しますが、セキュリティコンサルタントがあなたのために働いています... 3つのオプションと、すべてのオプション(再実装、クロスドメイン、サーバー)。

1
Jhuliano Moreno