borisbaer: Ist es bei einer POST-Request nötig, den Submit-Button zu prüfen?

Beitrag lesen

Hallo Rolf,

Das kann man so machen, vor allem, wenn es nur einen Button gibt. Bei zwei Buttons kann man entweder verschiedene Namen wählen oder einen Namen mit verschiedenen value-Attributen.

so weit, so klar.

Ob man Script-Kiddies damit scheitern lassen kann, einem Button außer einem name auch einen value zu geben? Ich weiß es nicht. Bei einem <input type="submit"> muss man ja einen Value haben, weil das der einzige Weg ist, dem Button einen Text zu geben. Beim <button> Element ist das nicht nötig, da werden value und Text getrennt gesetzt.

Das wäre die Frage.

So, wie RW das geschrieben hat, ist sende_formular() der GET Zweig.

Ach so. Beim SignUpController habe ich keinen GET-Zweig. Bei meinem Framework müsste ich ohnehin explizit einen GET-Zweig für den Router „mappen“.
Mein SignUpController hat nur einen POST-Zweig.

Affenformulare verwenden ja für GET und POST die gleiche URL, deswegen muss das PHP Script erkennen, für welches Verb es verwendet wird. Weswegen es ja auch meine Empfehlung ist, $_SERVER['REQUEST_METHOD'] dafür abzufragen. Der Grund ist: Wenn ich wissen will, ob ich einen POST bekomme, dann prüfe ich das, und nicht etwas anderes, aus dem sich indirekt ergibt, dass ein POST vorliegt.

Das ist also die Definition eines Affenformulars. Jetzt habe ich es verstanden. Die Request-Method wird bei mir ohnehin über die Router-Klasse abgefragt. Die Klasse beginnt so:

#[ Route( path: 'sign-up', method: 'POST' ) ]

public function store(): never

{ ...

Denn letztlich interessiert Dich ja gar nicht, ob sign-in gesetzt ist. Dich interessiert:

  • Wurde gepostet
  • Sind die Formularfelder ausgefüllt

Ja, genau. Das dachte ich mir eben auch, weshalb sich mir dann die Frage stellte, ob ich diese Abfrage bezüglich des entsprechenden Submits nicht auch weglassen könnte.

Ob die Abfrage, ob der Name des Submit-Buttons mitgeschickt wurde, zusätzliche Sicherheit bietet? Höchstens dann, wenn man damit vermeiden kann, dass xy.php seine Daten irrtümlich auf yz.php POSTet. Wenn jemand bösartig ist, dann ist diese Abfrage kein Hinternis.

Kein Hindernis, okay, das ist schon mal gut zu wissen. Also kann man sie bei einem einzigen Submit-Button auch getrost weglassen, oder?

Grüße
b0r15b43r