0

Microsoft の AntiXssLibrary を使用して、後で編集する必要がある入力をどのように処理しますか?

例えば:

ユーザーは次のように入力します。 <i>title</i>

次のようにデータベースに保存されます。 <i>title</i>

編集ページでは、テキスト ボックスに次のよう &lt;i&gt;title&lt;/i&gt;に表示されます。テキスト ボックスに表示する前にエンコードしたためです。

ユーザーはそれを好まない。

入力コントロールへの書き込み時にエンコードしなくても大丈夫ですか?

アップデート:

私はまだこれを理解しようとしています。以下の回答は、表示する前に文字列をデコードするように言っているようですが、それは XSS 攻撃を許可しませんか?

入力フィールド値の文字列のデコードは問題ないと述べた 1 人のユーザーは反対票を投じられました。

4

5 に答える 5

2

複数回エンコードしているようです。ASP.NETでは、MicrosoftのAntiXssライブラリを使用して、HtmlAttributeEncodeメソッドを使用して信頼できない入力をエンコードできます。

<input type="text" value="<%= AntiXss.HtmlAttributeEncode("<i>title</i>") %>" />

これにより、

<input type="text" value="&#60;i&#62;title&#60;&#47;i&#62;" />
<i>title</i>レンダリングされたページのマークアップにあり、入力ボックスのように正しく表示されます。

于 2009-05-15T15:09:10.750 に答える
1

あなたの問題は二重エンコーディングのようです。HTML は 1 回エスケープする必要があります (ページ上の HTML に問題なく挿入できるようにするため)。

于 2008-11-28T01:35:47.627 に答える
0

HTTPUtility.HTMLDecode(MyString) を呼び出して、テキストをエンコードされていない形式に戻すことができます。

于 2008-11-28T01:29:08.623 に答える
0

サイトでレンダリングされる HTML をユーザーが入力できるようにする場合は、それをエンコードしてデコードするだけでなく、それ以上のことを行う必要があります。

AntiXss を使用すると、スクリプトとマークアップをテキストに変換して攻撃を防ぎます。直接レンダリングされるマークアップを「クリーン」にすることは何もしません。そのシナリオで完全に保護するには、ユーザーの入力からスクリプト タグなどを手動で削除する必要があります。

正当な要素のスクリプト タグと JavaScript 属性を削除する必要があります。たとえば、攻撃者は悪意のあるコードを onclick または onmouseover 属性に挿入する可能性があります。

于 2009-07-10T18:19:37.910 に答える
-4

はい、入力ボックス内のコードはスクリプト攻撃から保護されており、エンコードする必要はありません。

于 2008-11-28T01:27:57.987 に答える