【问题标题】:Is XSS in ASP.NET DropDownList possible?ASP.NET DropDownList 中的 XSS 可能吗?
【发布时间】:2016-07-23 15:30:53
【问题描述】:

我的标记中有这个:

<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”吗?

【问题讨论】:

    标签: c# asp.net security xss


    【解决方案1】:

    塞顿,

    根据这篇文章:

    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
    
    }
    

    我希望这会有所帮助!

    卢卡斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多