Zeitgeist ZMS V3.0
 

PageVariables verhindern XSS effektiv
19.06.2009

Der neue Mechanismus der PageVariables verhindert durch die Prüfung aller eingehenden Variablen effektiv Cross Site Scriptiong (XSS) Attacken, wobei der zusätzliche Aufwand zum Registrieren der erlaubten Variablen minimal bleibt.
XSS ausgeschaltet: PageVariables
XSS ausgeschaltet: PageVariables

Die Idee ist einfach und bestechend: Für jede Seite wird definiert, welche Variablen übergeben werden dürfen und von welchem Typ diese sein müssen. Durch diese Angaben kann geprüft werden, ob die tatsächlich übergebenen Werte auch den Vorgaben entsprechend. Ist dies nicht der Fall wird in einfachen Fällen (zum Beispiel Typ Integer) versucht eine Korrektur vorzunehmen, in komplizierteren Fällen der Wert verworfen.

Durch diese Vorgehen kann sichergestellt werden, dass Unzulänglichkeiten in der Programmierung (nicht initialisieren von Variablen, keine Typen-Prüfung und -Konversion, etc.) keine gravierenden Folgen (Sicherheitslöcher) haben.

Das Registrieren der erlaubten Variablen erfolgt in der Tabelle 'pagevariables'. Dabei muss der Variablenname, der Typ (siehe unten), die Seite oder die Seiten die diese Variable verwenden und eventuell noch die Tabelle (wenn es um die Prüfung einer ID geht) angegeben werden. Zusätzlich muss noch deklariert werden ob der Eintrag zum Basissystem gehört.

 Folgende Variablentypen sind eingebaut:

  • all: Alles erlaubt (nur im Notfall verwenden!)
  • array: Ein PHP Array (normalerweise Formulardaten)
  • date: Ein Datum im Format dd.mm.yyyy
  • email: Eine E-Mail Adresse
  • html: Text mit HTML aber kein Javascript
  • id: Id einer Tabelle (die Tabelle muss im Feld 'table' angegeben werden)
  • integer: Nur ganze Zahlen
  • language: Eine auf der Seite verfügbar Sprache (zweistellige Abkürzung, Beispiel: 'de')
  • string: Zeichenkette aus häufig gebrauchten Zeichen
    Erlaubt sind: a-zA-Z0-9_-+().,:;?!
  • url: Eine voll qualifizierte URL (mit http://)