Validieren Herkunft des FORM POST, um sicherzustellen, kam es von demselben Server / app

StackOverflow https://stackoverflow.com/questions/1172739

  •  19-09-2019
  •  | 
  •  

Frage

Ich möchte eine Plattform / Sprache agnostische Lösung zur Gewährleistung der Herkunft einer FORM POST finden, ist von einer erwarteten Quelle. D. h Page1.aspx Posting page2.php innerhalb der gleichen Website.

Speziell, was ich versuche, hier zu tun ist Request Forgery zu verhindern.

War es hilfreich?

Lösung

ein verstecktes Feld in Ihrem Formular verwenden, das ein Token enthält die App generiert. Bewahren Sie das Token in der Benutzersitzung. Wenn das Formular abgeschickt wird, wird Ihre App überprüfen, ob der Wert des ausgeblendeten Feldes auf den Wert in der Benutzersitzung gespeichert identisch ist.

Wenn es identisch ist, dann wissen Sie, das eingereichte Formular herkommt, wo es erwartet wird, kommen.

Andere Tipps

Alt Faden, aber vielleicht noch nützlich sein.

Wenn Sie Session Informationen nicht festgelegt haben (beste Option), dann können Sie ein verborgenes Feld mit einem verschlüsselten Zeitstempel enthalten dann vergleichen (nach de-crypt) auf die aktuelle Zeit auf dem Prozessende sicherzustellen, dass es relativ nahe und damit so aktuell wie Sie für notwendig erachten.

Sie können das Formular enthalten in ein verstecktes Feld, das die SHA1Hash ( "some-Geheimnis" + remote_ip + PerSessionSecret) sein würde.

Die PerSessionSecret ist etwas, das man am Anfang der Session automatisch generieren. „Some-Geheimnis“ ist ein globaler Geheimwert -., Die ein wenig in Fall helfen werden, die zufällig generierte PerSessionSecret stellt sich heraus, nicht sehr zufällig genug sein

Dann tun die gleiche Berechnung auf der Formulareinreichung und Sie wissen, dass es höchstwahrscheinlich vom gleichen Client vorgelegt hat, dass es gesendet wurde. (Natürlich, wenn Sie mehrere Clients hinter der einzigen Adresse haben, wie ein Proxy oder ein NAT, kann man nicht zuverlässig zwischen ihnen unterscheiden).

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