5

次のコードがあります。

label x = txtName.Text; 

セキュリティ チームが dll を分析したところ、上記のコードに対して XSS 攻撃を実行できる可能性があることがわかりました。textboxTextプロパティが XSS 攻撃を防げないことはわかっていますが、どうすればよいですか?

次の修正は問題を解決しますか?

label x = Server.HtmlEncode(txtName.Text); 
4

2 に答える 2

12

私はあなたがWebFormsについて話していると仮定していますLabel-質問からは明らかではありません(実際のコードを投稿してください!)

これは、ASP.NET WebForms の設計の問題です。多くの要素には というプロパティTextがありますが、プロパティは要素によって異なることを行います。

Textコントロールを設定すると、そのプレーン テキスト コンテンツが設定されることを願っています。この安全な操作は、その名前が示すように思われるものです。そして、それはこれらのコントロールの場合です:

  • テキストボックス
  • ボタン
  • 画像ボタン
  • ListItem

残念ながら、他の多くのコントロールでは、同じ名前のプロパティが実際に要素にHTML マークアップを設定します。そのため、テキスト文字列が含まれている場合、山かっこ内<b>の文字の代わりに太字のテキストが表示されます。bまた、テキストにそのような文字列が含まれ<script>ていると、ブラウザ上でコードが実行され、セキュリティ上の問題が発生します。

これらの不幸な安全でないコントロールのいくつかは次のとおりです。

  • ラベル
  • ハイパーリンク
  • リンクボタン
  • ラジオボタン
  • チェックボックス
  • テーブルセル

これらを安全に使用するには、Textプロパティに書き込むすべてのコンテンツを HTML エンコードする必要があります。

最後に、両方向にスイングする 1 つのコントロールがあります。

  • リテラル

デフォルトでは、これは HTML マークアップを設定しますが (ブー!)、Mode="Encode"プロパティを設定すると、代わりにテキストが設定されます。

もちろん、これはすべて非常に紛らわしく、Web フレームワークを設計する方法はありませんが、それが私たちが取り組まなければならないことです。

于 2013-07-01T22:07:34.147 に答える