Robert Bienert: Sicher Programmieren (mit „Hallo-Welt-Beispiel“)

Beitrag lesen

Moin!

bitte berücksichtige:

a) vor einigen Jahren war die php.ini-Einstellung register_globals = On Standard. Auch nachdem es im Auslieferungszustand standardmäßig auf off geändert wurde, blieben doch viele Hoster zunächst noch bei on, um nicht ihre Kunden zu vergraulen, deren Skripte sich darauf verließen.

Zwischenfrage: Gab es damals einfach weniger XSS-Attacken, weil das entsprechende Sicherheitsgespür (auf beiden Seiten) noch nicht vorhanden war?

Das mit den Hostern ist echt ein Hammer: Anstatt den Kunden darauf hinzuweisen, dass er unsicher programmiert und damit eventuell die Serversicherheit gefährdet, einfach „nett lächeln und winken“. Wahrscheinlich wurde stattdessen das Backup besser automatisiert.

Wie gesagt, vor einigen Jahren war das Standard - und es fand sich genau so in PHP-Büchern und erst recht in Tutorials.

Mein lieber Scholli.

Das erinnert mich an meinen Einstieg in C: Das Buch dafür (Titel leider entfallen) war alt und staubte in der Stadtbücherei vor sich hin, war aber sonst echt spitze: An jeder Stelle wurde darauf hingewiesen, dass man auf die Pointer aufpassen muss, sonst …

b) Kein Wunder, dass es so auch in der Volkshochschule gelehrt wurde. Dort, wie anderswo, gibt es enorme Unterschiede in der Qualität des vermittelten Lehrstoffs wie auch in der Qualität der Vermittlung.

Aber trotzdem bin ich bislang davon ausgegangen, dass dort keine „gefährlichen“ oder „falschen“ Inhalte vermittelt werden, schließlich sind es ja öffentlich-rechtliche, allgemeine Bildungseinrichtungen.

Die Zielgruppe der Volkshochschule ist nicht die der Hochschulen, das Kursniveau wird daher im Normalfall Uniniveau nicht erreichen - und will es auch nicht.

Sicheres Programmieren ist keine Sache der Intelligenz, dass kann man auch einfach „trainieren“, genauso, wie ein Bauarbeiter die Sicherheitsregeln für seine Arbeit „implantiert“ bekommt.

c) Was erwartest Du von einem Wochenendkurs, d.h. vielleicht 16 UE? Wahrscheinlich "Einführung in PHP". Eventuell auch für Programmieranfänger. Welche Inhalte (inklusive Übungen) kannst Du in diesem Zeitraum vermitteln? Welches Wissen kannst Du voraussetzen? Wenig.

Ich erwarte von so einem Kurs, dass er einen Überblick über die Programmiersprache gewährt, so dass man damit die ersten Schritte tätigen kann, wobei auch gewisse Fallen und Tricks nicht außen vor bleiben dürfen. Die meisten Sicherheitslücken, die täglich über heisec in die Welt getickert werden, sind im Grunde uralt: Buffer Overflows (seit wann gibt es Computer?), XSS (seit wann gibt es das WWW?), Phishing (seit wann gibt es Betrug?). Und trotzdem werden immer noch solche Fehler gemacht.

Sicherlich wäre es wünschenswert, wenn in einem Programmierkurs die Vermittlung von sicherheitsrelevantem Wissen ganz oben in der Prioritätenliste stände. Wenn Du jedoch wegen lauter "Sicherheit" nicht mal ein einfaches "Hallo Welt"-Beispiel zum Laufen bekommst, dann hat der Wochenendkurs (über dessen Sinn man eh' streiten könnte) ganz sicher das Ziel verfehlt.

So, was kommt denn meistens nach dem „Hallo Welt“ – richtig, „Hallo Du“, auf PHP:

<form action="[code lang=php]<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
  <p><label for="derName">Name</label> <input type="text" name="Name" id="derName" size="25"></p>
  <button type="submit">Grüßen</button>
</form>[/code]

<?php  
if (array_key_exists('Name', $_POST) && ($name = $_POST['Name']))  
    echo '<p>', htmlspecialchars($name), '</p>';  
?>

Deswegen bitte ich Dich, nicht zu harsch zu urteilen, sondern die Umstände zu berücksichtigen. In diesen Jahren hat sich viel getan, auch in Sachen Sicherheit.

Wahrscheinlich sind es die angesprochenen Qualitätsunterschiede zwischen einzelnen VHS: Ich kenne die in Nordhessen, weil mein Vater dort jahrelang als Dozent für EDV tätig war. In seine Kurse kamen Büroleute, die von der Schreibmaschine auf den PC umgeschult wurden, da gehörte sowohl Qualität als auch angesichts der ganzen Viren Sicherheit einfach dazu. Deshalb war ich so überrascht, dass es da teilweise so starke Abweichungen gibt. Es war nicht harsch gemeint, sonder ich war halt einfach überrascht.

Ich freue mich schon auf die Zeiten, wenn PHP6 Standard sein wird - und die Magic Quotes verschwunden sein werden.

Wie lange dauert das denn noch :-)

Auch das PHP-Handbuch ist in dieser Hinsicht nicht in jeder Hinsicht empfehlenswert.

Ich bin ja mal auf den „Month of PHP-Bugs“ gespannt, der „Month of Apple-Bugs“ ist bislang eher langweilig, erst eine böse Lücke dabei.

Viele Grüße,
Robert