2017-12-06 12 views
1

일부 .NET에서 WebControls에 XSS 문제가 발생했습니다. 내 코드에서 뒤에 나는이 같은 foreach 문에 추가 된 많은 ListItems와 간단한 DropDownList로있어 : 드롭 생성 할 때, 옵션의 값 속성은 완전히 소독되지 않은DropDownList (WebControls)의 기본 .NET 위생화

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

하지만. 응답 본문의 옵션은 다음과 같습니다.

<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 옵션 태그의 값 속성은 정수 또는 코드와 같은 하나 개의 단어는? 리드 디자이너와 얘기하면서 백업이 필요하다는 뜻입니다. – 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 /) WebControls의 목록과 자동으로 인코딩을 수행하는지 여부를 포함합니다. 이 목록은 오래되었으므로 샘플 프로젝트에서 직접 컨트롤을 테스트하는 것이 좋습니다. – SBurris