ASP.NET DropDownList中的XSS是否可能

本文关键字:是否 XSS 中的 NET DropDownList ASP | 更新日期: 2023-09-27 17:58:31

我的Markup中有这个:

<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"不同的值?

ASP.NET DropDownList中的XSS是否可能

Xeddon,

根据这篇帖子:

黑客DropDownList值

实际上,只要页面的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