Der Martin: input type password und chrome

Beitrag lesen

Hallo,

<input type="password" name=\"pw\" value="$aus_der_datenbank">

Das ist fehlerhaftes HTML und/oder fehlerhaftes PHP. htmlspecialchars() fehlt.

Das stimmt und das (finde ich) kann man keinem Programmierer zum Vorwurf machen.

doch, unbedingt.

Kontextwechsel sind für Menschen nicht so leicht zu erkennen, für Maschinen jedoch schon.

Das sehe ich genau umgekehrt. Eine Maschine bzw. ein Programm kann nur im Ausnahmefall erkennen, was mit den erzeugten Ausgabedaten noch passieren soll und wird; ein Mensch, insbesondere wenn er sich Programmierer nennt oder als solcher tätig wird, sollte das können, weil er den Überblick nicht nur über das aktuelle Script, sondern über die Zusammenhänge im Projekt hat.

Eine hilfsbereite Programmiersprache stellt deshalb Sicherheitsmechanismen zur Verfügung, die diese Fehlerklasse kategorisch ausschließen. Das vermeidet riesige Sicherheitslücken und spart dazu noch eine Menge Schreibarbeit. PHP und die meisten objektorientierten Sprachen zählen leider nicht dazu.

PHP will Handwerkszeug sein, nicht eine komplette, auf ein bestimmtes Produkt ausgelegte Fertigungsstraße.

Unerklärlicherweise werden in PHP HTML-Ausgaben für gewöhnlich immernoch mit String-Konkatenation gebastelt.

Ja. PHP ist so angelegt, dass es über stdout und (meistens) HTTP genau die Zeichenfolge nachbildet, die der Client in diesem Kontext erwartet. Das ist wohl in den meisten Anwendungsfällen HTML-Quelltext, aber PHP will ja universell sein und nicht auf einen bestimmten Ressourcentyp festgelegt. Klar könnte man eine Scriptsprache auch so entwerfen, dass sie intern eine DOM-Struktur aufbaut, diese dann serialisiert und an den CLient liefert. Dann würde man sich aber die Flexibilität verscherzen, damit neben HTML auch mal Plaintext, CSS, generisches XML, JSON oder etwas ganz anderes zu erzeugen - etwa den binären Byte-Stream einer Bildressource.

Wtf? Für eine Sprache, die im Web zu Hause ist.

Tja. Spezialisierung schränkt meistens die möglichen Anwendungsbereiche ein. Ich bin ehrlich gesagt froh, dass man diesen Weg in PHP nicht gegangen ist.

So long,
 Martin

--
Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.