News CONSUS OKAS Fachartikel Spiele Impressum
 
Cross Site Scripting
Cross Site Scripting (im späteren XSS genannt) beruht in aller Regel auf der Bearbeitung von Fremddaten also Benutzereingaben die übergeben werden. Daher sollte man nie den von Benutzern übermittelten Daten vertrauen. Dies gelingt meist durch zu großes Vertrauen des Programmierers an die User oder durch Fehler im Script. Ziel dieser Angriffe ist das Ausführen von Programmcode, Ausspähen der Userdaten oder einfach nur zu nerven.
Zu den Fremddaten muss dabei alles gerechnet werden, was der Benutzer auf irgendeine Art und Weise an das Skript übergeben kann (URL-Adresse, Formulardaten, Cookie etc.).
Die Gefahr liegt dabei wohlgemerkt weniger im Vertrauen, sondern in der fehlenden/fehlerhaften Validierung der Daten (siehe unten) - die rechtmäßigen Besucher vertrauen der Seite und Cross-Site Scripting mißbraucht dieses Vertrauen.

Für XSS (auch als HTML-, JavaScript- und User-Agent Injektion bekannt) gibt es bei PHP verschiedene Varianten:

  1. Der Angreifer speichert entsprechende Inhalte direkt in der Datenbank bzw. dem Filesystem der Präsenz ab, die aktiven Inhalte werden danach bei allen Besuchern des entsprechenden Bereiches zur Ausführung gebracht. (z.B. Eingabefelder innerhalb von Foren und Gästebüchern)
  2. Der Angreifer modifiziert die Variablen eines gültigen Links der Applikation um sein eigenes Skript einzubinden. Viele Seiten laden ihren Content aus der Datenbank oder einer anderen PHP Datei und bedienen sich einer Variable um zu steuern welcher Inhalt den nun geladen werden soll. Durch Manipulation dieser Variable würde das Sript den falschen Inhalt includen.
  3. Der Angreifer bedient sich einer SQL Injection, dadurch werden Werte, welche von Formularen kommen oder per GET übertragen wurden, und häufig in Datenbank Abfragen vorkommen, editiert um damit auf eine SQL Anweisung, die innerhalb des Skriptes ausgeführt wird einfluss zu nehmen.


Für einen XSS Angriff benötigt der Angreifer also in aller Regel eine Anwendung, die Eingaben nicht ausreichend prüft, bevor sie sie als Bestandteil einer dynamischen Webseite an den Benutzer zurückgibt. Um XSS zu verhindern gibt zwei Grundprinzipien:

  1. Fremddaten validieren
    Alle Daten die extern an das Skript übermittelt werden, müssen vor der weiteren Verwendung und Anzeige geprüft werden. Dafür müssen Programmteile vorgesehen werden, die alle Fremddaten zu Beginn des Skriptes kontrollieren.
  2. PHP Funktionen anwenden
    PHP-Funktionen liefert die Funktionen strip_tags(), htmlspecialchars() , htmlentities() mit. Während strip_tags() versucht, alle HTML-Tags zu löschen, wandeln htmlspecialchars() und htmlentities() bestimmte oder alle Sonderzeichen in die entsprechenden Entitäten um. So werden aus den Sonderzeichen '<' und '>' zur Kennzeichnung von HTML-Tags die entsprechenden HTML-Entitäten '<' und '>'. Um die Datenbank zu schützen sei noch die Funktion mysql_real_escape_string() erwähnt.

    Bei Fragen, Wünschen, Anregungen oder Verbesserungen dieses Artikels kann man uns jederzeit eine Mail schicken.
Nach oben
 
Aktuelles:
  - new Beam Video
Projekte:
  - CGE Consus Game Engine
- OKAS unsere Webhosting Software
Social: