O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

6 Authentisierung und Authentifizierung 166
Seite anbieten, sondern den Kunden- oder Benutzer-Login auf einer
separaten Seite unterbringen, die Sie besonders gründlich auf XSS-
Möglichkeiten prüfen. Vor allem in den Variablen für Benutzernamen
und Passwörter sollten Sie nach solchen Fehlern suchen – schließlich
wird der gewählte Benutzername nach einem fehlgeschlagenen Login
oftmals als Bestandteil der Fehlermeldung angezeigt. Wenn Sie die
superglobale Variable
$_REQUEST statt $_POST oder $_GET verwenden,
können Angreifer einen Link präparieren und ihn Ihren Benutzern
unterschieben – etwa so:
http://ihredomain.de/login.php?user=<script>alert(document.cookie)
</script>
Damit ist es ohne Weiteres möglich, Ihren Benutzern die für einen
Login notwendigen »Credentials«, also ihre Zugangsberechtigung, zu
stehlen. Weitere Informationen zur Vermeidung von XSS-Lücken fin-
den Sie im Kapitel 4 »Cross-Site Scripting«.
6.4 Spamvermeidung mit CAPTCHAs
Für Betreiber von Gästebüchern, Foren, Blogs und anderen Diensten,
bei denen Kommentarfunktionen die Eingabe eigener Daten erlauben,
ist in den vergangenen Jahren das Spamproblem zu einer erheblichen
Belästigung geworden. Automatisiertes Gästebuch-Spammen mit Bots,
die mehrere Hundert Einträge pro Minute erzeugen können, ist keine
Seltenheit mehr und lässt sich mit traditionellen Mitteln kaum abfan-
gen. Zu gut haben die Roboter sich auf die üblichen Spamschutz-Maß-
nahmen eingestellt, textbasierte Filter greifen nur noch selten.
CAPTCHA
Ein momentan noch effektiver Schutz gegen Kommentar-Spammer
und automatisiertes Passwort-Bruteforcing sind sogenannte CAPTCHAs.
CAPTCHA steht für »Completely Automated Public Turing-Test to
Tell Computers and Humans Apart«, also einen automatischen Turing-
Test, um Computer von Menschen zu unterscheiden. In der Praxis ist
ein CAPTCHA ein meist audiovisuelles Merkmal, das nur für Men-
schen einen Sinn ergibt, also etwa eine Grafik, deren Inhalt sich nur für
das menschliche Auge, nicht aber für die meisten Computerprogramme
erschließt.
Es hat sich eingebürgert, zur Vermeidung von Spam in webbasier-
ten Anwendungen kleine Grafiken einzubauen, die einen kurzen
Schriftzug enthalten. Dieser Schriftzug wird meist künstlich verzerrt,
indem die Buchstaben rotiert und versetzt werden, und Muster oder
38D5>(95259!?79>?B=E<1B5>25C?>45BC1E6-(("S7<938;59D5>
1676.4 Spamvermeidung mit CAPTCHAs
geometrische Figuren im Hintergrund sollen Computerprogramme
daran hindern, die Schrift automatisch zu erkennen. Vereinzelt werden
mittlerweile auch kurze Animationen (meist in Form animierter GIF-
Grafiken) eingesetzt, um besonders sichere CAPTCHAS zu erzeugen.
Menschliche Benutzer jedoch können den so für Maschinen unlesbar
gemachten Schriftzug lesen und tippen ihn in ein Formularfeld ab, um
nachzuweisen, dass sie wirklich Menschen sind.
Nachteile
Ein zentraler Nachteil von CAPTCHAs ist, dass sie die Barriere-
freiheit von Websites massiv blockieren. Sehbehinderte Besucher wer-
den nur selten oder nie in der Lage sein, an der durch die verzerrten
Grafiken gestellten Hürde vorbeizukommen. Blinde Benutzer, die
Webseiten mithilfe eines als Braillezeile bekannten Hilfsmittels lesen,
können über dieses Gerät überhaupt keine Grafiken ertasten. Websi-
tes, die aufgrund ihrer Ausrichtung barrierefrei, also für Behinderte
voll benutzbar sein müssen, können somit keine rein grafischen
CAPTCHAs verwenden. Sie müssen zusätzlich Audio-CAPTCHAS
erzeugen, um sehbehinderte Benutzer nicht auszusperren.
Von allen anderen werden CAPTCHAs inzwischen auf breiter
Front eingesetzt, um automatisiertes Spam, Anmeldungen bei Foren
und Maildiensten und Account-Bruteforcing zu verhindern. Große
Sites wie Hotmail, Google Mail und Yahoo setzen auf grafische
CAPTCHAs, um Spammer davon abzuhalten, sich immer neue
Zugänge einzurichten. Diese haben jedoch inzwischen einen Weg
gefunden, CAPTCHAs zu umgehen: Sie richten Websites ein, auf
denen sie kostenlos Bilder pornografischer Natur anbieten. Um diese
Bilder ansehen zu können, muss der Anwender jedoch ein CAPTCHA
lesen und die enthaltene Zeichenfolge eingeben. Dieses CAPTCHA
stammt jedoch von Hotmail oder einem anderen Dienst – denn im
Hintergrund haben die Spammer bereits eine Anmeldung bei diesem
Freemail-Service automatisch so weit ausgefüllt, dass sie nur noch das
CAPTCHA benötigen, um sich einen neuen Zugang für ihre Werbe-
mails zu schaffen.
Gegen dieses Vorgehen ist leider kein CAPTCHA gefeit, denn sei-
nen Zweck hat es streng genommen erfüllt: Um das CAPTCHA zu
lesen und zu interpretieren, ist weiterhin ein Mensch notwendig.
PWNtcha, der
CAPTCHA-Schreck
Einen weiteren Ansatz verfolgt PWNtcha
12
, ebenfalls ein Kunst-
wort (»Pretend we’re not a Turing Computer, but a Human Antago-
nist« oder »Pwned CAPTCHA«): Der Entwickler dieser Programm-
sammlung konzentriert sich darauf, vollautomatisch die verschiedens-
ten Implementierungen des CAPTCHA-Konzeptes zu knacken, und
12. http://sam.zoy.org/pwntcha/
6 Authentisierung und Authentifizierung 168
kann dabei bereits beeindruckende Resultate vorweisen. Sollte dieses
bisher unveröffentlichte Programm in Zukunft als Open Source her-
auskommen, wird für viele Anbieter von Foren und Blogs das Spam-
problem erneut in vollem Maße auftreten (siehe Abb. 6–1).
Spammer haben mittlerweile beachtliche Erfolge bei der Überwindung
einzelner CAPTCHA-Implementationen erzielt – so wurden 2007 und
2008 angeblich die grafischen Sicherheitscodes mehrerer großer Free-
mail-Dienste dauerhaft überlistet und massenhaft Accounts zum
Spamversand eingerichtet. Das Katz-und-Maus-Spiel, das andere
Bereiche der Computersicherheit seit Jahrzehnten bestimmt, hat also
auch im Bereich der CAPTCHAs an Fahrt aufgenommen.
Doch bis das passiert, wird glücklicherweise noch einige Zeit ver-
gehen – und bis dahin ist ein halbwegs sicheres CAPTCHA eine gute
Möglichkeit, Spam zu vermeiden.
PEAR::Text_Captcha
Möchten Sie CAPTCHAs in Ihrer Anwendung verwenden, so kön-
nen Sie auf die PEAR-Klasse
PEAR::Text_Captcha
13
zurückgreifen. Sie
lässt sich mit dem PEAR-Kommando
pear install –f Text_Captcha
Abb. 6–1
CPTCHAs knacken
mit PWNtcha
13. http://pear.php.net/package/Text_Captcha

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required