3

私は大規模で活発なフォーラムを運営していますが、非常に深刻な問題に悩まされています。stackoverflowが画像(imgur)を処理する方法と同じように、ユーザーはリモート画像を埋め込むことができますが、特定のホストセットはありません。画像は、次のコードを使用して任意のホストから埋め込むことができます。

[img]http://randomsource.org/image.png[/img]

これは問題なく機能します...ユーザーが認証が必要な画像を埋め込むことができる場合を除いて、画像によってポップアップが表示され、認証ポップアップを編集できるため、「[サイト名]のユーザー名を入力してください。ここにパスワードがあります」と残念ながら、ユーザーはそれに夢中になっています。

これに対する正しい応答は何ですか?私は次のことを検討してきました:

  1. 各ページの読み込みには、ページ上の各画像とそのステータスをチェックするJavascriptの実行が含まれます

  2. イメージホストの承認済みリストを用意する

  3. リモート埋め込みを完全に無効にする

問題は、これが他の場所で発生するのを見たことがないということですが、私たちはそれに悩まされています、どうすればこれを防ぐことができますか?

4

2 に答える 2

3

それはパスワードの問題以上のものです。また、一部のユーザーが他のユーザーに対してCSRF攻撃を実行することを許可しています。たとえば、ユーザーは自分のプロフィール画像をとして設定できます[img]http://my-active-forum.com/some-dangerous-operation?with-some-parameters[/img]

最善の解決策は-

  1. イメージサーバー側をダウンロードして、ファイルシステム/データベースに保存します。妥当な最大ファイルサイズを維持してください。そうしないと、攻撃者が大量のGBのデータをサーバーにダウンロードして、n/wおよびディスクリソースを占有する可能性があります。
  2. オプションで、ファイルが実際に画像であることを確認します
  3. 使い捨てドメインまたはIPアドレスを使用して画像を提供します。瓶やアプレットを装った画像を作成することができます。使い捨てドメインからすべてのファイルを提供することで、このような悪意のあるアクティビティからユーザーを保護します。

サーバー側で画像をダウンロードできない場合は、サーバー側で許可されているURLパターン(ドメインだけでなく)のホワイトリストを作成してください。このURLパターンと一致しないURLはすべて破棄してください。

javascriptでチェックを実行してはなりません。JSでチェックを実行すると、当面の問題は解決されますが、CSRFから保護されるわけではありません。ユーザーのブラウザから攻撃者が制御するURLにリクエストを送信しているため、危険です。その上、そのアプローチのパフォーマンスへの影響は法外です。

于 2011-02-28T08:31:16.403 に答える
1

あなたはほとんどあなた自身の質問に答えたと思います。個人的には、オプション 1 とオプション 2 を組み合わせることにしました。つまり、クライアント側の Javascript を作成して、最初に画像埋め込み URL をホワイトリストに登録されたホストのセットと照合します。そのリストにない埋め込み URL ごとに、サーバーが 401 ステータス コードを返さないことを確認しながら、これらの行に沿って何かを行います。

このようにして、レイテンシー (HEAD メソッドとドメイン ホワイトリストを介して重複するリクエストを最小限に抑えようとします) とセキュリティのバランスがとれます。そうは言っても、ユーザーが受け入れることができれば、オプション 2 が最も安全です。

于 2011-02-28T07:38:28.347 に答える