Frage

Schauen Sie sich dieser Seite von die New York Times:

  

http://homedelivery.nytimes.com/HDS/learnMorePopUp.do   ?mode=common.learnMorePopUp
  &productId=NDS
  &prodRate=7.40

Ich war überrascht zu sehen, dass, wenn ich manuell den prodRate Parameter geändert, die Seite aktualisiert:

  • Der einleitende Abopreis.
  • Die regulären Abopreis.

Versuchen Sie es selbst! Nun, ich habe nicht viel Web-Entwicklung getan, aber ich weiß, dass dies wahrscheinlich nicht passieren sollte. Also ich frage mich:

  • Welche Art der Implementierung kann dieses Verhalten verursachen?
  • Wie würden Sie die Seite ändern solche sensiblen Parameter vom Endbenutzer zu verbergen?
War es hilfreich?

Lösung

Vielleicht möchten Sie Ihre Frage neu zu formulieren, als die einzigen Antworten kann ich begreifen nicht zu beleuchten:

Q: Welche Art der Implementierung dieses Verhalten verursachen würde
A: Ein, in der Benutzereingabe erlaubt internes, vertrauenswürdiges Verhalten zu steuern. Wenn Sie sich fragen, für „warum sollte dies jemand tun“, habe ich es in der Regel als ein Missverständnis gesehen. Der Code Autor nicht erkennen, im Allgemeinen nicht, dass der Benutzer kann (a), um den Wert zu steuern und / oder (b) selbst entdeckt sie existieren. Meistens habe ich dies als eine Umleitung implementiert gesehen - Sie auf eine Schaltfläche klicken, ermittelt der Server die Menge dann den Browser auf eine neue Seite umgeleitet, die den Wert unterhält

F: Wie würden Sie die Seite ändern, um so sensible Parameter vom Anwender zu verbergen
A: Speichern Sie nicht den Wert in einer Art und Weise, durch die sie durch den Endbenutzer bearbeitet werden kann. Wenn Sie den Speicher auf dem Server zur Verfügung (wie eine Servlet-Engine) speichern Sie es in dem Sitzungskontext. Wenn Sie nicht über einen guten Session-Mechanismus haben, können Sie es in einem signierten oder HMAC'd Cookie speichern konnten.

Andere Tipps

Sie lesen wahrscheinlich nur den Wert direkt an der Abfragezeichenfolgeflag für die Anzeige. Ich hoch Zweifel (oder besser gesagt, wäre wirklich hoffen), dass jede tatsächliche Auftragsabwicklung nicht aus diesem Wert basiert, und eher aus einer Lookup über die Produkt-ID.

Nun, Sie haben tatsächlich versucht es noch zu bestellen? Es könnte die Eingabe am hinteren Ende validieren.

In Bezug auf andere Optionen, könnten sie in Betracht gezogen haben, entweder die Informationen zu veröffentlichen oder die Informationen in einem Cookie setzen. Weder sind genau narrensicher. Sie können nicht ein neues Fenster mit einem Post bekommen und kann ein Benutzer Cookies deaktivieren.

Sie können nicht von dieser Seite bestellen, also bin ich nicht ein Sicherheitsloch hier zu sehen. Ja, es ist kitschig, aber ich würde viel mehr betroffen sein, wenn der tatsächliche Auftragsfluss wurde so schlecht gebaut. Es macht es einfach, die Rate an einem Ort zu aktualisieren und nur den Wert übergeben, so kann ich sehen, wie es passiert ist.

Wir haben einige Rating-Seiten, die so ziemlich das gleiche tun. Sie sind nicht auf den tatsächlichen Kaufvorgang verbunden, so Parameter sind in Ordnung. Wenn der Kunde will, sich verwirren, indem Sie eine URL bearbeiten, so sei es ... die tatsächliche Auftragsfluss ist alle Datenbank-getrieben und Benutzer bearbeitet werden nie vertraut.

Ich habe alle Arten von schlechter Praxis wie folgt gefunden. Ich habe Websites laufen um ganze SQL-Abfragen zu sehen in den Abfragezeichen, die dann ausgeführt . Ich erinnere mich auch einen Online-Shop zu finden, die Preise in Abfragezeichenfolgeflag geben. Ich änderte man auf einen negativen Wert und, sicher genug, an der Kasse der Preis war minus! Ich ging nicht weiter, obwohl -. Technisch es Betrug und nicht wert zu riskieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top