Benjamin Schieder

RANT: PHP HTTP KLASSEN UND FUNKTIONEN

2014 August 12

Hab ich schonmal erwaehnt, dass ich grottige Kacksoftware hasse? Bestimmt, und nicht nur einmal. Beispiel heute: PHP. Genau genommen, dessen HTTP client Klassen.

Wenn man nicht echt ALLES zu fuss machen will, findet man zwar Klassen, die HTTP sprechen, aber keine davon macht wirklich alles, oder auch nur annaeherungsweise ein brauchbares Subset davon.

So kann zum Beispiel eine Klasse, die ich fand, angeblich alles von Proxys mit und ohne Proxy-Authentication sowie Basic / Digest / NTLM / Local authentication. Im Quellcode findet sich dazu auch etwas Code, aber die Parameter, die zum Beispiel von HTTP Digest Auth benoetigt werden (nonce, qop) werden einfach ignoriert und weggeworfen. Funktioniert dann super grunz.

Andere Klassen werben mit “Hier, wir erkennen HTTP Basic Auth automatisch, setz einfach die Parameter username und password!”. Aaah, ja, und was ist mit HTTP Digest, welches netterweise immer weitere Verbreitung findet? “Aeh… ja… stammel ohschaumalschonsospaetichmussweg!”. ARGH

Achja, und das Tollste: Wenn die Klasse die cURL Funktionen verwendet und entweder safe_mode oder open_basedir aktiviert sind (was so ziemlich UEBERALL der Fall sein sollte, man will ja wenigstens ein MINIMUM an Sicherheit in seinen PHP Seiten), koennen Location: Header nicht automatisch verfolgt werden.
What-The-FUCK?
Die Begruendung dafuer ist, dass cURL ja eine externe Library sei, und ein Location: file:///etc/passwd alles kaputt machen koennte. Ich finde, daran sieht man sehr gut, wie scheisse PHP eigentlich ist: Zwei Optionen, die den Zugriff auf Dateien ausserhalb des Scriptverzeichnissen beschraenken, und keine funktioniert zuverlaessig.

Ich lass das einfach mal so stehen.

EOF

Category: blog

Tags: PHP Rant HTTP