Abstract: XSS und SQL-Injections sind relativ bekannt und werden meist bei
der Entwicklung von Webapplikationen berücksichtigt - es gibt
jedoch noch weitere mögliche Lücken - z.B. CSRF (Cross Site Request
Forgery):
Viele Webapplikationen bieten heutzutage permanente Cookies, also
Cookies, mit denen man über eine Session hinaus eingeloggt bleibt.
Wenn man nach einer abgelaufenen Session auf die Seite geht, wird
dann automatisch wieder eine neue erstellt. Das ist gut, denn
es bedeutet Komfort. Jedoch sind viele Applikationen diesbezüglich
auch recht unsicher. Es gibt z.B. genug Seiten, bei denen man
persönliche Daten ändern kann, ohne sich erneut zu authentifizieren.
D.h., man braucht hier nur die Session als Cookie. Nun kann ein
einfacher Link auf einer Seite eines Angreifers oder ein per
Javascript abgeschicktes Formular eine solche Aktion auslösen,
beispielsweise ein Posting in einem Forum abschicken - und man
merkt noch nicht mal etwas davon. Das nennt sich CSRF.
Bei jeder Aktion das Passwort eingeben zu lassen ist auch keine
praktikable Lösung. Allenfalls die Session-ID noch als
Formularparameter zusätzlich zum Cookie bietet Sicherheit, nimmt
einem jedoch wieder den Komfort, dank des permanenten Cookies ein
Formular einige Stunden offen zu haben. Zudem steht die Session-ID
dann im HTML.
Ich möchte ein simples, aber weitgehend sicheres Token-Konzept
vorstellen, das, eingebaut in ein Framework, leicht zu handhaben ist.
Das Risiko, dass solche Lücken ausgenutzt werden, ist relativ gering
bei kleinen, unbekannten Seiten, aber sobald eine Seite oder auch
ein Framework bekannter wird, steigt das Risiko, da hier die
Wahrscheinlichkeit eines erfolgreichen Angriffs im Vergleich zum
Aufwand höher ist.