4

このHttpUtilityクラスは、エンコードとデコードの両方を提供します。しかし、MS AntiXSS 3.1 ライブラリを使用すると、エンコード専用の一連のメソッドがありますが、これはデコードを回避できるということですか?

例えば

AntiXSS を適用する前に:

lblName.Text = "ABC" + "<script> alert('Inject'); </script";

AntiXSS を適用した後:

lblName.Text = AntiXSS.HTMLEncode("ABC" + "<script> alert('Inject'); </script");

したがって、エンコーディングを適用すると、HTML タグが Label コントロールに表示されます。

これは望ましい結果ですか?

4

3 に答える 3

4

HttpUtility.HtmlDecodeメソッドを使用して、 AntiXssでエンコードされたテキスト (または任意のエンコードされたテキスト) をデコードできます。明示的な AntiXss デコードは必要ありません。

于 2015-01-22T20:18:53.357 に答える
3

それは、入力がどこから来ているか、そしてそれをどうしたいかによって異なります。多くの場合、フレームワークは、Request.Form、Request.QueryString などを見る前にデコードします。

エンコードされた文字列を別の場所 (データベースなど) から読み取っている場合は、それをデコードする必要があるかもしれません。

I 3> AntiXSS encoded once becomes

I 3&gt; AntiXSS which then becomes after double encoding

I 3&amp;gt; AntiXSS

出力を消費するものによっては、意図しない副作用が生じる可能性があります。文字列が変更されなくなるまでデコードする行為は、正規化の一例です。

于 2010-09-23T02:56:31.910 に答える
3

はい、これは望ましい出力だと思います。これは、スクリプトが実行されていないためです。スクリプトが実行された場合、スクリプト タグの代わりにアラートが表示されます。したがって、これは安全なコードです。

于 2010-09-23T11:20:21.123 に答える