Hauptmenü

Untermenü

Sicher programmieren - Einführung

1. Die Abschnitte

2. Vorwort

Nach langem hin und her habe ich es endlich geschafft, dieses Tutorial zu Papier (HTML) zu bringen. Und da es um ein wirklich wichtiges Thema handelt, solltet ihr euch das auch schleunigst zu Gemüte führen. Allerdings weise ich euch darauf hin, dass es hier nur einen exemplarischen Überblick über die gängigsten Anfängerfehler gibt.

Warum bei "Allgemeines"?

Nun ich werde euch mögliche Attacken anhand von fehlerhaftem PHP-Code zeigen, aber das sind so grundsätzliche Dinge, dass man sie auf jede beliebige Sprache übertragen kann. Außerdem handelt es sich nicht um ein Tutorial im klassischen Sinn, da ich euch nur allgemeine Lösungsmöglichkeiten zeige und nicht auf konkrete Dinge eingehen werde.

3. Sicherheitslücken

Dafür gibt es einfach gesagt vier Möglichkeiten. Es liegt ein Fehler im Betriebssystem vor. Oder in der verwendeten Komponenten (Apache, PHP, MySQL), die obendrein mangelhaft konfiguriert sein könnten. Zu guter Letzt gibt es dann noch die Fehler, die ihr in eure Anwendung eingebaut habt.

Nun, was die Bugs im Betriebssystem oder der eingesetzten Software angeht, so habt ihr im Normalfall keinen Einfluss darauf. Dafür sind dann die Leute zuständig, die gewöhnlich in irgendeinem Keller hausen, nie das Licht der Sonne erblicken und sich Administratoren nennen. Und es gehört zu deren Job, regelmäßig für Updates zu sorgen. Was die Konfiguration angeht, so könnt ihr in den meisten Fällen nichts machen, außer bei den Kellerkindern anrufen und sie auf mögliche Schwachstellen hinweisen.

Und darum werden wir uns bis auf ein paar Ausnahmen nur mit den möglichen Fehlerquellen beschäftigen, die ihr selber produzieren könnt. Allerdings solltet ihr auf jeden Fall über ein lokales System verfügen, da wir ein wenig in der php.ini herumspielen werden.

4. Hacker, Cracker, Script-Kiddies

Was treibt nun diese Leute dazu, in fremde Internetauftritte einzudringen? Beschäftigen wir uns zuerst mal mit der ungefährlichen Spezies, den so genannten "Script-Kiddies". Das sind meistens pubertierende Pickelgesichter, die zwar vom Programmieren null Ahnung haben aber über eine reichhaltige Sammlung von "Hacker-Tools" verfügen. Damit starten sie dann blindwütige Attacken auf ungesicherte Server oder Standardanwendungen wie zum Beispiel Content Management Systeme à la Typo3, Contenido oder Joomla. Das Ergebnis ist dann in den meisten Fällen ein verunstalteter Internetauftritt. Dagegen schützt man sich durch regelmäßige Sicherheitsupdates.

Gefahr

... geht vor allem von Hackern und Crackern aus. Beide verfügen über Programmierkenntnisse und wissen, wie man Schwachstellen ausnutzt. Wie es heute ist, kann ich leider nicht sagen, aber noch vor einigen Jahren gab es zwischen beiden eine deutliche Trennung. Hacker waren die "Guten", die Sicherheitslücken aufspürten und darauf aufmerksam machten. Cracker dagegen hatten kriminelle Absichten. Und auf diese Spezies wollen wir uns konzentrieren.

5. Das Beispiel

Um euch auf mögliche Fehler aufmerksam zu machen, werden wir den mittlerweile allseits bekannten "Foltershop für Zahnärzte" nehmen, saumäßigen Code verwenden und ihn nach allen Regeln der Kunst manipulieren. Dabei zeige ich euch nur, worauf ihr zu achten habt. Die Schwachstellen zu beseitigen ist dann eure Aufgabe.

Die Daten

... findet ihr wie gehabt rechts oben unter selbigem Punkt. Für jeden Abschnitt, wo ich explizit darauf hinweise, gibt es einen eigenen Ordner. Zudem liefere ich euch den obligatorischen Dump (foltershop.sql), um die fertige Datenbank in einem Rutsch einzuspielen.

Ganz wichtig!!!

Da mein neuer Provider ein rabiat konfiguriertes Antivirenprogramm einsetzt, musste ich leider die Zip-Datei mit einem Passwortschutz versehen, damit die nicht ständig geblockt wird. Selbiges laut also:

entpack

Falls es jemand interessiert, es geht hier um die Datei hack.gif, mit der ich mich hier unter Punkt 3 beschäftige.

Der Quellcode

... ist bewusst so einfach wie möglich gehalten, damit ihr die Probleme leicht nachvollziehen könnt. Darum gibt es auch nicht das sonst typische "Affenformular", mit dem ich sonst arbeite, sondern pro Schritt eine eigene Datei. Und glaubt mir, die Qualität ist wirklich mies. Daher solltet ihr euch diese "Form" der Programmierung nicht zum Vorbild nehmen. Selbst ich habe mich geschämt, als ich das zusammengehauen habe.

Übersicht

6. Vorbereitung

Entpackt die Zip-Datei auf eurem lokalen System. Dann öffnet im Hauptordner sicher_programmieren die db.inc.php und tragt dort eure Zugangsdaten ein. Dann spielt ihr anschließend den Dump foltershop.sql ein. Die Datei phpinfo.php benötigen wir für später.

Und dann können wir loslegen. Aber nicht sofort, denn zuerst geht es um ein paar grundsätzliche Dinge, die man auf jeden Fall vermeiden sollte.

weiter zum nächsten Abschnitt