3

この CSS プロパティでデータ URI を使用してみました:

background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYGBg8AUIMAAAUgBOUWVeTwAAAABJRU5ErkJggg==");

そして、ローカルでは問題なく動作します。ただし、デバッグ中にファイルがクロムに​​表示されません。そこに移動しようとすると、次のようになります。潜在的に危険な Request.Path 値がクライアントから検出されました (:)。

したがって、明らかに私のアプリケーションは、この画像の URI を疑わしいと見なします。

表示するにはどうすればよいですか?以下を使用して検証を緩和してみました。

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false"></pages>

理想的には、ルールをあまり緩和したくないでしょう。これらのデータ URI 画像をロードするのに十分なだけです。

4

1 に答える 1

1

Base-64 でエンコードされた URI のために、アプリケーションが要求を疑わしいと見なすに違いありません。悪意のある URL を Base-64 でエンコードすることは、攻撃者が URL を除去またはエスケープするフロント エンド フィルターを介して URL を取得し、コードを読み取る人間からの要求を隠すための一般的な戦略です。XSS 攻撃は、通常、これらの URI の 1 つをデータベースに格納して他のユーザーに提供することによって行われます。

最近では XSS のリスクが高いため、チェックを無効にすることを躊躇します。可能であれば、エンコードされていない URI を使用してください。できない場合は、その理由を自問する必要があります。URI を難読化してセキュリティを強化しようとしている場合は、攻撃者がこれを解読するのは非常に簡単であることを知っておいてください。これは暗号化の形式ではなく、データを表す別の方法です。

于 2013-04-16T17:47:17.687 に答える