Cheatah: regulärer Ausdruck aka Mailsicherheitslücke

Beitrag lesen

Hi,

In diesem Programm gibt es auch eine Subroutine, die die
angegebene EMail-Adresse auf ihre Gueltigkeit hin untersucht
(ueber regulaere Ausdruecke).
Da aber die EMail-Adressen Angabe "a@b.c < /etc/passwd"

[...]

perldoc perlfaq9:

"How do I check a valid mail address?

You can't, at least, not in real time. Bummer, eh?
[...]
Many are tempted to try to eliminate many frequently-invalid mail addresses with a simple regexp, such as /[1]+@([\w.-].)+\w+$/. It's a very
bad idea. However, this also throws out many valid ones, and says nothing about potential deliverability, so is not suggested. Instead, see
http://www.perl.com/CPAN/authors/Tom_Christiansen/scripts/ckaddr.gz , which actually checks against the full RFC spec (except for nested
comments), looks for addresses you may not wish to accept mail to (say, Bill Clinton or your postmaster), and then makes sure that the hostname
given can be looked up in the DNS MX records. It's not fast, but it works for what it tries to do.
[...]"

Ja, ich weiß, Du willst die Adresse gar nicht auf Existenz prüfen ;-) aber in o.g. Script findest Du eine RFC-konforme syntaktische Prüfung. Wenn Du es Dir einfacher machst als dort, sind Fehler wie der von Dir erkannte nicht auszuschließen.

Allerdings könntest Du auch ein $email =~ /^([^\s<]+)/; $email = $1; versuchen (ggf. die Blacklist darin erweitern), das müßte weitgehend(!) sicher sein.

Cheatah


  1. \w.- ↩︎