Robschi: Was meint ihr zu file_get_contents("php://input") ?

Hallo,

Bin kürzlich über

$content = trim(file_get_contents("php://input"));

gestolpert.

Plane nun, via fetch API gesendete POST Requests am Backend aufzufangen. Scheint mir komfortabler, da ich sozusagen alles durchschicken kann... oder gibt es triftige Gründe, warum man z.B. lieber form-data verwenden sollte?

Kann ja im Backend schließlich zusätzliche Sicherheitsvorkehrungen treffen, denke da an die Validierung des mitgesandten Headers sowie Prepared Statements vor einem Insert in die Datenbank.

Danke für eure Gedanken, Robschi

  1. Hallo Robschi,

    gibt es triftige Gründe, warum man z.B. lieber form-data verwenden sollte?

    Wenn Du Formulareingaben verarbeiten willst, wäre der triftige Grund, dass form-data deutlich bequemer ist.

    PHP hieß mal - damals, als ich noch jung war und Haare hatte - eine Zeitlang "PHP/FI" = Personal Home Page/Forms Interpreter. Das ist eins der Dinge, die es auch heute noch prima kann.

    Solange Du am Client also Daten abschickst, die sich als Formulardaten oder File-Upload darstellen, gibt es keinen Grund für php://input.

    Wenn Du bspw. mit PHP einen REST Service baust und JSON-Strings herumschickst, dann wäre php://input zum Lesen des JSON-Body das Mittel der Wahl.

    Rolf

    --
    sumpsi - posui - obstruxi
  2. Du willst mehr oder weniger ein „Ja“ oder ein „Nein“. Das kann Dir aber niemand sagen, Du gibst selbst zu wenig Informationen.

    Plane nun, via fetch API gesendete POST Requests am Backend aufzufangen.

    $content = trim(file_get_contents("php://input"));
    

    oder gibt es triftige Gründe, warum man z.B. lieber form-data verwenden sollte?

    Ich mach ja auch gerne viel „zu Fuß“ statt irgendwelche fertigen Drittanbieter-Libs zu benutzen und habe dafür Gründe wie mangelndes Vertrauen in deren Sicherheit, Pflege und dauerhafte Verfügbarkeit.

    Da das von Dir gezeigte Zeug aber zum jeweiligen „Core“ gehört - und also „Vanilla“ ist - solltest Du bei der Frage nach dem Grund für den Einsatz derart unbequemer und für Dich arbeitsaufwendiger, fehlerträchtiger sowie auch sonst „teurer“ Vorgehensweisen wirklich gute Antworten haben.

    Ansage: php://input muss man benutzen wenn es nicht anders geht.