Security

Das Thema Sicherheit ist in einer Zeit der freien Verfügbarkeit von Daten, unzähligen Bot-Netzen und SPAM-Versand ein aus Web-Anwendungen nicht mehr wegzudenken. Hierbei spielt nicht nur der rechtliche Hintergrund eine große Rolle, sondern auch die Sicherheit und Stabilität der Hosting-Systeme ist direkt von der Sicherheit und der Stabilität der Applikationen abhängig. Aus diesem Grund ist es unerlässlich, dass die eingesetzten Tools oder Frameworks bereits secury and stable by design sind.

Die folgende Liste zeigt Features des APF auf, die bereits out-of-the-box für Sicherheit sorgen:

  • Ein- und Ausgabe-Filter
    Seit dem 1.5er Release besitzt das Framework allgemeingültige Ein- und Ausgabe-Filter, die beim Start des Page- oder FrontControllers die Benutzer-Eingaben (GET und POST) filtern. Dies erzeugt bereits eine Grundsicherheit und erhöht die Sicherheit einer Anwendung gegenüber anderen Tools deutlich.
    Seit dem 1.9er-Branch ist es zudem möglich diese zu beeinflussen und eigene Filter für Ein- und Ausgabe einzuklinken, die einen speziellen Anwendungsfall noch besser schützen können, als die allgemeingültigen Filter.

  • Formular-Filter
    Seit dem 1.9er-Branch ist es zudem möglich, Text-Eingabefelder mit einem Filter zu belegen. Das ermöglicht es dem Entwickler, an definierten Stellen (z.B. Login-Formular) für zusätzliche Sicherheit zu sorgen und SQL-Injections durch Filterung von problematischen Escape-Zeichen gänzlich zu vermeiden.

  • Konfiguration:
    Konfigurationsaufgaben werden konsequent über den ConfigurationManager gezogen. Dieser verwendet keine Parameter aus dem REQUEST und wird nur über die Applikation selbst verwendet. So werden XSS-Attacken schon vom Design her nicht möglich!

  • URL-Layout:
    Das URL-Layout muss einem definierten Schema entsprechen. Mögliche XSS-Lücken fallen daher bei Verwendung der Komponente LinkGenerator dadurch auf, dass eine URL nicht geparst werden kann und die genannten Komponenten einen Fehler anzeigen.

  • Templates:
    Der Page-Controller verarbeitet Templates nicht wie viele andere Frameworks als PHP-Skripten. PHP-Code, der evtl. durch XSS-Lücken eingeschleust werden kann - sollte die auf dem Framework aufsetzende Software derartige Lücken aufweisen - wird daher nicht ausgeführt, sondern lediglich zur Anzeige gebracht.

  • Bootstrap-Architektur:
    Durch die Bootstrap-Architektur (=alle Requests werden über eine zentrale Datei abgewickelt) können Anfragen wie /content.php?seite=http://casts.150m.com/expo/expo1? keinen Schaden anrichten.

  • Steuerparameter:
    Steuerparameter in URLs, die direkt auf das Inkludieren von Templates Einfluss haben greifen nicht direkt und unkontrolliert auf das Dateisystem durch, sondern gelten nur in einem definierten Namespace. Wird ein Template nicht gefunden, so wird ein Applikationsfehler angezeigt, was das Auslesen von System-Dateien nicht möglich macht. Steuerparameter in FrontController-Actions werden zusätzlich über eine Konfiguration abstrahiert und greifen nicht direkt auf Filesystemressourcen zu.

Analysen zum Thema XSS und Sicherheit können im Artikel Hacking & das APF 2009/2010 oder im Forum unter http://forum.adventure-php-fra...p?f=5&t=21 nachgelesen werden. Das Dokument PHPSec.pdf beinhaltet weitere Informationen zum Thema PHP-Sicherheit.

Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.