2016-07-23 68 views
1

我有这个在我的标记: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> 

在CS我使用:

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 

} 

我希望这有助于!

Lucas