Es kommt auch heutzutage noch immer vor, dass viele eigen programmierte Webseiten in einem erhöhtem Sicherheitsrisiko existieren, da sich die Programmierer nicht ausreichend um die Sicherheit gekümmert haben. Die Folgen solcher Programmierung können verheerend hoch sein, daher möchten wir nun einige Sicherheitsmethoden vorstellen, wie man sich effektiv gegen die bekanntesten Angriffe schützen kann.
Die goldene Regel bei der sicheren PHP Programmierung ist: Die Usereingaben sind gefährlich.
Angreifer versuchen mittels SQL-Injection eigen eingeschleuste MySQL Befehle auszuführen, um so eventuelle Werte der Datenbank zu ändern, manipulieren oder gar zu löschen.
Hier sollte darauf geachtet werden, dass der potentielle Angreifer keine Chance hat SQL Befehle einzuschleusen. Um hier für den ausreichenden Schutz zu sorgen sollte man gucken, ob die eingegebenen Datentypen stimmen und den Querystring vor der Datenbankverarbeitung escapen.
XSS Angriffe werden meistens von Angreifern dazu eingesetzt, Webseiteninhalte zu verändern oder Schadecode einzuschleusen. Meistens werden hier JavaScript Codes eingeschleust und dann von den einzelnen Clienten aufgerufen, wenn es nicht vorzeitig von der Serveranwendung abgefangen wurde. Dies kann etwa das Eingabeformular einer Webseite sein, wie in Webshops, Foren, Blogs und Wikis üblich.
Um also einen XSS Schutz einzubauen sollte man jede Usereingabe die später wieder ausgegeben wird auf unerwünschte Inhalte wie JavaScript prüfen.
- strip_tags() — Entfernt HTML- und PHP-Tags aus einem String (Dazu unbedingt Beispiel 1# ansehen)
RFI/LFI Dateioffenlegung
LFI bedeutet "Local File Inclusion" und bezeichnet das Ausnutzen einer Lücke auf einer Internetseite, um somit Daten aufzurufen die lokal auf dem Webserver liegen.
RFI bedeutet "Remote File Inclusion" und bezeichnet das Ausnutzen einer Lücke auf einer Internetseite, in die man Code includiert, der nicht lokal auf dem Webserver abgespeichert ist, sondern überall anders liegen kann.
Um sich vor derartigen Angriffen zu schützen, sollte man alle Funktionen, die irgendwas mit dem Dateisystem zu tun haben (include, require, readfile, file_get_contents und viele mehr) genauestens überprüfen.
Ps. MVC Frameworks wie z.B. das sehr einsteigerfreundliche und beliebte CodeIgniter haben darüber hinaus Active Record Klassen, sowie eine Input Klasse, wo Angrifsversuche bestmöglich abgewehrt werden und SQL Parameter automatisch escaped werden.
The End
Wir hoffen damit einigen helfen zu können Ihre Webseiten und Anwendungen sicherer zu gestalten. Über weiterführende Angriffsmöglichkeiten, die häufig vorkommen oder ergänzenden sicherheitsbringenden Funktionen freuen wir uns natürlich. ;)