2016-07-23 52 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