私は従来のコードで作業しています - .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=""><img src=2 onerror=alert(y65)>">"><img src=2 onerror=alert(y65)></option>
<option value="df">df</option>
<option value=""dsdf><img src=2 onerror=alert(y65)> "><img src=2 onerror=alert(y65)> ">"dsdf><img src=2 onerror=alert(y65)> "><img src=2 onerror=alert(y65)> </option>
ご覧のとおり、すべての文字がエスケープされているわけではありません。これをどうすれば解決できますか?または、これはWebControlsの問題ですか?
が、これは何とかドキュメントに記載されている:Usally optionタグのvalue属性は、整数またはコードのような1つのワードがありますか?私はリード・デザイナーと話をしながらバックアップが必要になることを意味します。 – Tenso
@Tenso使用するコントロールに慣れておくことが重要です。私はコントロールの共通セットを使用し、自動的にエンコードを行うかどうか(個人的なテストを通じて)知っています。公式のドキュメントに関しては、[MSDNリストボックスクラス](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listbox(v = vs.85).aspx)ページにはこの特定の問題についての「警告」警告。 – SBurris
@Tenso古い投稿(2008)[どのASP.NETコントロールが自動的にエンコードするのですか?](https://blogs.msdn.microsoft.com/sfaust/2008/09/02/which-asp-net-controls -automatically-encodes /)WebControlのリストと、自動的にエンコードを行うかどうかを指定します。このリストは古いもので、サンプルプロジェクトで自分でコントロールをテストすることをお勧めします。 – SBurris