2016-07-23 36 views
1

Ich habe dies in meinem Markup:Ist XSS in ASP.NET DropDownList möglich?

<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> 

In CS i verwenden:

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

Ist es möglich, dass ein Hacker die Dropdownlist von Clientside ändern können und falsch ausgewählte Werte an den Server senden? SelectedValue kann andere Werte als "Mr" oder "Mrs" haben?

Antwort

0

Xeddon,

zu diesem Beitrag nach:

Hacking DropDownList value

Eigentlich sollte man davon ausgehen können, dass die Dropdown-Liste Optionen nicht Client-Seite, solange die Seite geändert worden ist EnableEventValidation = true (das ist Standard, obwohl Sie es pro Seite oder in der web.config deaktivieren können). Wenn ein neuer Wert auf Ihre Dropdownlist-Client-Seite hinzugefügt, und ein Postback auftritt, tritt ein Fehler auf, wenn Sie diesen neuen Wert für die Ereignisvalidierung registrieren (http://odetocode.com/blogs/scott/archive/2006/03/21/asp-net-event-validation-and-invalid-callback-or-postback-argument-again.aspx)

Sie auf jeden Fall in Ordnung sein sollte. Sollten Sie EnableEventValidation deaktivieren, sollten Sie in der Lage sein, um manuell zu validieren wie folgt (geschrieben wie in MVC wäre):

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 

} 

Ich hoffe, das hilft!

Lucas