2016-07-23 1 views
1

내 마크 업이있다 : CS에서ASP.NET DropDownList의 XSS가 가능합니까?

<asp:DropDownList ID="ddlSalutation" runat="server"> 
    <asp:ListItem Text="Please chose" Value="" /> 
    <asp:ListItem Text="Mr" Value="Mr"></asp:ListItem> 
    <asp:ListItem Text="Mrs" Value="Mrs"></asp:ListItem> 
</asp:DropDownList> 

내가 사용 :

string value = ddlSalutation.SelectedValue; 
// ... save value 

그것은 해커가 클라이언트 측에서 DropDownList로를 변경하고 서버에 잘못된 선택의 값을 보낼 수 수 있습니까? SelectedValue는 "Mr"또는 "Mrs"와 다른 값을 가질 수 있습니까?

답변

0

Xeddon,

이 게시물에 따르면 : 사실

Hacking DropDownList value

드롭 다운 목록 옵션이 한 페이지가이 같은 클라이언트 측 변경되지 않았 음을 가정 할 수 있어야한다 EnableEventValidation = true (페이지 당 또는 web.config에서 비활성화 할 수 있지만 기본값). 새 값은 당신의 드롭 다운리스트의 클라이언트 측에 추가하고, 다시 게시하면 당신은 확실히 괜찮을 이벤트 유효성 검사 (http://odetocode.com/blogs/scott/archive/2006/03/21/asp-net-event-validation-and-invalid-callback-or-postback-argument-again.aspx)

이 새 값을 등록하지 않으면 오류가 발생합니다 발생됩니다. 당신이 EnableEventValidation를 비활성화해야합니다, 당신은 (MVC에있을 것입니다로 작성) 다음과 같이 수동으로 검증 할 수 있어야한다 :

public ActionResult PageOfGlory(){ 
    string value = Request.Form["dllSalutation"]; 
    string[] validSalutations = new string[]{ 
     "Mr", 
     "Ms" 
    }; 
    if(!validSalutations.Contains(value)){ 
     ModelState.AddModelError("","Invalid Salutation"); 
     return View(); 
    } 
    //Add stuff to database 

} 

나는 희망이 도움이!

루카스

관련 문제