2017-12-06 5 views
1

私は従来のコードで作業しています - .NETでWebControlsが動作していて、XSSの問題があります。DropDownList(WebControls)の既定の.NETサニタイズ

foreach (string enumValue in aEnumValues) 
     pListBox.Items.Add(new ListItem(enumValue, enumValue)); 

しかし、ドロップダウンが発生した場合、オプションの値属性が完全にサニタイズされていない:私はこのようなforeachの中に追加のListItemを持つ単純なDropDownListコントロールを持っているの背後にある私のコードでは レスポンス本文のオプションは次のようになります。

<option selected="selected" value="&quot;>&lt;img src=2 onerror=alert(y65)>">&quot;&gt;&lt;img src=2 onerror=alert(y65)&gt;</option> 
<option value="df">df</option> 
<option value="&quot;dsdf>&lt;img src=2 onerror=alert(y65)> &quot;>&lt;img src=2 onerror=alert(y65)> ">&quot;dsdf&gt;&lt;img src=2 onerror=alert(y65)&gt; &quot;&gt;&lt;img src=2 onerror=alert(y65)&gt; </option> 

ご覧のとおり、すべての文字がエスケープされているわけではありません。これをどうすれば解決できますか?または、これはWebControlsの問題ですか?

答えて

1

ListControlsの値は通常は整数ですが、リファクタリングすることができれば、将来の変更に対してより保守性が高くなります。 (年のコメントに基づいて)

foreach (string enumValue in aEnumValues) 
    pListBox.Items.Add(new ListItem(enumValue, Server.HtmlEncode(enumValue))); 

更新:あなたはクイックフィックスをしたい場合は、Uは、HTML部分をエンコードする必要がありますすることができますuはselectタグを見れば

が、それはhtmlタグを表示し、持っていますあなたはhtmlタグを表示する選択タグを見たことがありますか?私は選択タグが隠されていると思うし、それはページ内のいくつかのロジックです。

<select id="card"> 
    <option value="visa">Visa</option> 
    <option value="mc">Master card</option> -- value is abbreviation of display text 
    <option value="amex">American Express</option> 
</select> 
<select id="lstStates"> 
    <option value="CA">California</option> -- value is state's code 
    <option value="FL">Florida</option> 
</select> 
<select id="lstStaffs"> 
    <option value="1001">Daniel Smith</option> --value is StaffId 
    <option value="1008">John Doe</option> 
</select> 

enter image description here

+0

が、これは何とかドキュメントに記載されている:Usally optionタグのvalue属性は、整数またはコードのような1つのワードがありますか?私はリード・デザイナーと話をしながらバックアップが必要になることを意味します。 – Tenso

+1

@Tenso使用するコントロールに慣れておくことが重要です。私はコントロールの共通セットを使用し、自動的にエンコードを行うかどうか(個人的なテストを通じて)知っています。公式のドキュメントに関しては、[MSDNリストボックスクラス](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listbox(v = vs.85).aspx)ページにはこの特定の問題についての「警告」警告。 – SBurris

+1

@Tenso古い投稿(2008)[どのASP.NETコントロールが自動的にエンコードするのですか?](https://blogs.msdn.microsoft.com/sfaust/2008/09/02/which-asp-net-controls -automatically-encodes /)WebControlのリストと、自動的にエンコードを行うかどうかを指定します。このリストは古いもので、サンプルプロジェクトで自分でコントロールをテストすることをお勧めします。 – SBurris

関連する問題