Ich habe eine Website, die seit einiger Zeit läuft, die eine Menge Benutzereingaben verwendet, um die Website zu erstellen. Natürlich gibt es Dutzende von Formularen auf der Website. Beim Erstellen der Site habe ich häufig verdeckte Formularfelder verwendet, um Daten an den Server zurückzusenden, damit ich weiß, welcher Datensatz aktualisiert werden soll.Wie verhindere ich, dass Benutzer Daten über ein Formular fälschen?
könnte ein Beispiel sein: <input type="hidden" name="id" value="132" />
<input type="text" name="total_price" value="15.02" />
Wenn das Formular abgeschickt wird, erhalten diese Werte an den Server weitergeleitet und ich die Datensätze aktualisieren, basierend auf den übergebenen Daten (dh der Preis der Aufzeichnung 132 würde umziehen bis 15.02).
Ich habe kürzlich herausgefunden, dass Sie die Attribute und Werte über etwas so einfach wie Firebug ändern können. Also ... Ich öffne den firebug und ändere den id Wert auf "155" und den Preiswert auf "0.00" und schicke das Formular ab. Viola! Ich sehe die Produktnummer 155 auf der Website an und es heißt jetzt, dass es 0,00 € ist. Das geht mich an.
Wie kann ich wissen, welcher Datensatz ohne eine Abfragezeichenfolge (leicht zu ändern) oder ein verstecktes Eingabeelement, das die ID an den Server weitergibt, aktualisiert?
Und wenn es keinen besseren Weg gibt (ich habe buchstäblich Tausende von Websites gesehen, die die Daten auf diese Weise weitergeben), wie würde ich es dann so machen, dass wenn ein Benutzer diese Werte ändert, die Daten auf der Serverseite nicht ausgeführt (oder etwas Ähnliches, um das Problem zu lösen)?
Ich habe darüber nachgedacht, die ID zu verschlüsseln und dann auf der anderen Seite zu entschlüsseln, aber das schützt mich immer noch nicht davor, dass jemand sie ändert und etwas passiert, das mit einer anderen ID in der Datenbank übereinstimmt.
Ich habe auch über Cookies nachgedacht, aber ich habe gehört, dass diese auch manipuliert werden können.
Irgendwelche Ideen? Das scheint mir ein RIESIGES Sicherheitsrisiko zu sein.
Klingt so, als müssten Sie eine serverseitige Validierung implementieren. – sarnold
Suchen Sie den Preis anhand der ID, nicht ein verstecktes Feld? – Ryan
Es gibt ein grundlegendes Problem in Ihrer Architektur: Ihr Server sollte keine Preise vom Client nehmen. Machen Sie die Preise etwas, das vom Kunden nicht geändert werden kann und Sie sind festgelegt. – machineghost