Frage:
Ist es möglich, Werte in eine Dropdown-Liste einzufügen?
drobison
2013-09-11 21:29:15 UTC
view on stackexchange narkive permalink

Angenommen, eine ASP.NET-Seite oder eine beliebige HTML-Seite enthält eine Dropdown-Liste mit einer Reihe von Preisen. Beim Posten der Seite überprüft der Code die Auswahl der Dropdown-Liste für eine Berechnung. Kann jemand die Werte ändern und die Seite veröffentlichen, ohne dass der Server weiß, dass die Seite manipuliert wurde?

Update

Mir wurde mitgeteilt, dass ASP.NET mit der Eigenschaft Page.EnableEventValidation einen gewissen Schutz davor bietet. Wenn diese Option aktiviert ist (standardmäßig aktiviert), führt der Versuch, den Wert eines ASP-Steuerelements zu ändern, zu einem Fehler:

Ungültiges Postback- oder Callback-Argument. Die Ereignisüberprüfung wird mithilfe der Konfiguration oder <% @ Page EnableEventValidation = "true"%> auf einer Seite aktiviert. Aus Sicherheitsgründen überprüft diese Funktion, ob Argumente für Postback- oder Callback-Ereignisse von dem Serversteuerelement stammen, das sie ursprünglich gerendert hat. Wenn die Daten gültig und erwartet sind, verwenden Sie die ClientScriptManager.RegisterForEventValidation-Methode, um die Postback- oder Callback-Daten zur Validierung zu registrieren.

Ein Grease Monkey [Skript] (http://userscripts.org/scripts/show/3172) wurde entwickelt, der genau dies tut.
Oder benutze Firebug.
Fünf antworten:
Xander
2013-09-11 21:37:58 UTC
view on stackexchange narkive permalink

Dropdown-Listen sind ein HTML / UI-Konstrukt. In HTTP gibt es kein solches Konzept. So kommunizieren Client und Server letztendlich miteinander.

Obwohl ja, ein Client die Seite ändern könnte, ist dies nicht unbedingt erforderlich, da es eigentlich keine Seite geben muss. Am Ende sendet ein Client einfach eine HTTP-Anfrage an den Server zurück und enthält einige Daten. Diese Daten können die in das HTML-Formular eingegebenen Werte oder beliebige Werte sein, die nach Lust und Laune des Benutzers ausgewählt werden.

Unter dem Strich können Sie Eingaben nicht vertrauen . Alles, was vom Client gesendet wird, sollte verdächtig sein. Es gibt keine Garantie dafür, dass es Ihren Erwartungen entspricht, und es muss vor der Annahme auf dem Server validiert werden.

baordog
2013-09-11 22:05:27 UTC
view on stackexchange narkive permalink

Ja, das geht einfach. Der Benutzer lädt den HTML-Code herunter, ändert den Inhalt und sendet den von mit geändertem Inhalt.

Stellen Sie unbedingt sicher, dass Sie alle Formulardaten validieren, bevor sie in Ihre Datenbank gelangen. Abhängig von Ihrem Webframework gibt es normalerweise eine Möglichkeit, die Optionen auf genau das zu beschränken, was Sie angeben.

"Normalerweise gibt es eine Möglichkeit, Optionen auf genau das zu beschränken, was Sie angeben.": JSF verwirft beispielsweise automatisch alle Daten aus einer Übermittlung, die nicht in der von JSF gerenderten Dropdown-Liste enthalten waren.
David Scholefield
2013-09-12 01:28:41 UTC
view on stackexchange narkive permalink

Wenn Sie einen Proxy auf Ihrem Client installieren, z. B. Paros, können Sie die Antwort Ihres Browsers sehr leicht abfangen, bevor sie an den Server gesendet wird, und einen beliebigen Wert bearbeiten - einschließlich der im Dropdown-Formularelement ausgewählten Option. Sobald Sie gesehen haben, wie einfach dies ist, können Sie sich leicht vorstellen, wie Sie dies auf verschiedene programmatische Arten tun können - einschließlich Add-Ons im Browser, wenn Ihr Browser kompromittiert wurde.

Die absolut einzige Möglichkeit , sich dagegen zu schützen, besteht darin, zu überprüfen, ob der Wert beim Server eingetroffen ist, dh ob er gültig ist.

Dies gilt für alle an den Server gesendeten Daten, Formulardaten, URL-GET-Pfaddaten und sogar Header.

Browser- / Client-basierte Sicherheit ist überhaupt keine Sicherheit.

Vishal Chawla
2013-09-12 11:00:37 UTC
view on stackexchange narkive permalink

Wenn Sie Google Chrome verwenden, klicken Sie einfach mit der rechten Maustaste und überprüfen Sie das Element. Gehen Sie dann zu diesem bestimmten Auswahl-Tag, klicken Sie mit der rechten Maustaste und klicken Sie auf "Als HTML bearbeiten", um eine neue Option hinzuzufügen.

Malachi
2013-09-11 22:40:47 UTC
view on stackexchange narkive permalink

Sie könnten die Daten in die Antwort einfügen, aber wenn der serverseitige Code nicht nach dem sucht, was sie geben, wird dort die Einspeisung gestoppt. Die Validierung im serverseitigen Code ist am besten.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...