1

イメージ ソースを URL クエリ パラメータとして受け入れる Web アプリを作成しています。画像ソースを検証して、ユーザー/発信者が XSS などを引き起こす可能性のある要求を送信していないことを確認したいと考えています。悪意のあるコンテンツがサーバーにプッシュされず、エンド ユーザーに影響を与える可能性がある画像の src または正規表現を検証する良い方法を教えてください。

次の形式の画像ソースを考えることができます。

  1. http://foo.com/bar.jpg (絶対)
  2. /foo/bar.jpg (相対)
  3. foo/bar.jpg (相対)

ありがとう、ガウラフ

4

2 に答える 2

0

正規表現はおそらくあなたが望むものではありません。Javaを使用しているため、次を使用しますURI

final URI input;

try {
    input = URI.create(inputStringHere);
} catch (IllegalArgumentException e) {
    // Not even a valid URI: deal with it
}

// do other tests on input
于 2012-12-24T10:44:47.767 に答える
0

このソリューションは、URL をパラメーターとして取得し、その URL サーバー側からデータを取得することを前提としています。

ファイル名をチェックするだけで、実際のデータに悪意があるかどうかはわかりません。私はこれを3つのステップで行います:

  1. ファイル名をテストして、サポートされているタイプで終わることを確認してください。これはセキュリティのためではなく、使用できないデータのダウンロードを避けるためであり、実際にはオプションです。何かのようなもの:/\.(jpe?g|gif|png)$/
  2. GET リクエストではなく HEAD リクエストを使用して、データが配置されている Web サーバーにアクセスします。返された MIME タイプが予想されるイメージ タイプと一致することを確認してください。これがセキュリティの最前線です。良くない場合は、データを取得しないでください。さもないと:
  3. データをダウンロードし、ローカルでテストして、実際にサーバーが指定した MIME タイプであることを確認します。unixy 環境にいる場合は、ファイル データを 経由でパイプしてみてくださいfile -I -

これでも安全が完全に保証されるわけではありませんが、攻撃の最も明白なベクトルを除外する必要があります。

于 2012-12-24T10:49:37.287 に答える