2

MSDNの古い AntiXss 記事によると、AntiXss.UrlEncode はリンク href をエンコードするために使用されます (次の例では Untrusted-input)。

<a href="http://search.msn.com/results.aspx?q=[Untrusted-input]">Click Here!</a>

私の理解では、UrlEncode は、JS で document.location を設定する場合など、URL に何かを設定する場合にのみ使用する必要があります。では、前の例で HtmlAttributeEncode を使用して [Untrusted-input] をエンコードしないのはなぜでしょうか? 一方、上記のサンプルのように UrlEncode を使用して HTML 属性をエンコードすると、セキュリティ上の問題はありますか?

4

1 に答える 1

2

URL エンコードは、アンカー タグで使用する URLパラメーターをエンコードします。

Html Attribute encode は、一般的な HTML 属性で使用するためにエンコードします。

どちらのエンコーディング タイプも異なります。HTML 属性エンコーディングの安全でない文字は &xxx; に変換されます。URL エンコーディングでは、%xxx に変換されます。おそらく間違っているとセキュリティ上の問題が発生する可能性は低いですが、データがブラウザで適切にレンダリングされなかったり、リクエストで理解されなかったりする可能性があります。

(確かに、古いブラウザーとの非互換性のため、おそらく Url エンコーディングは変更される予定です。HTML エンコーディングは、特定の Unicode 範囲の安全なリストを可能にするために、次の CTP ドロップで変更される予定です)。

于 2010-08-26T22:06:11.563 に答える