Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> Diskussion: E-Mailadressen überprüfen per Regulären Ausdrücken
Ayom-Team
Geschrieben am: Mi 16.05.2007, 15:26
Report PostQuote Post

AyomRank 1
**

Gruppe: Member (aktiv)
Beiträge: 1
Mitglied seit: 17.11.2004


Diskussion zum Artikel E-Mailadressen überprüfen per Regulären Ausdrücken in der Kategorie PHP, Mysql & Apache

Habe hier eine einfache "Funktion" (ich weiß, dass es keine wirkliche PHP Funktion ist ;-)), die die E-Mailadresse eines User überprüft.

emailadresse-ueberpruefen.php
CODE

<?php
if (isset($_POST[submit])){
/*
Wegen PHP- register_globals="on" / "off"
Bei Problemen $_POST[submit] durch $submit ersetzen
und die nachfolgende Zeile auch, das $text = ...
*/
$text = $_POST[text];

//Folgende Patter überprüft ob die E-Mailadressen korrekt ist.

if (ereg("[.a-z0-9_-]+(.[a-z0-9_-]+)*@([0-9a-z][0-9a-z]*[0-9a-z].)+([a-z]{2,4})", $text)) {

echo "$text n <br /><br /><br />";
echo "<a href="$_SERVER[PHP_SELF]">Zurück zum Formular</a> n <br />";
} else {
echo '<p>E-Mailadresse ist nicht korrekt!</p>';
}
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="text" /><br />
<input type="submit" value="Abschicken" name="submit"/>
<?php
}
?>
</form>


-------------------
Dieser Artikel steht unter der Creative Commons Lizenz.
Top
PMEmail Poster
Top
 
 
bowling-liga
#2 Geschrieben am: Mi 16.05.2007, 15:30 (+00:04)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 56
Mitglied seit: 16.05.2007


Dazu faellt mir ein schoenes Zitat aus den "Programming-Quotations" ein:

Manche denken, wenn sie mit einem Problem konfrontiert werden, "Oh, ich kann das mit Regular-Expressions loesen". Dann haben sie zwei Probleme. (Jamie Zawinski)

Der obige Ausdruck wuerde auch folgende Zeichenkette akzeptieren:

team@bowling&liga?de

Beste Gruesse,
den.


--------------------
Top
PMEmail PosterUsers Website
Top
 
Sascha Ahlers
#3 Geschrieben am: Mi 16.05.2007, 16:00 (+00:29)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
Mitglied seit: 27.12.2004


Der Spruch kommt mir sehr bekannt vor, aber wer auch immer den Reguluren Ausdruck da oben geschrieben hat, der weiß zwei Saschen nicht, (1) wie Reguläre Ausdrücke richtig verwendet werden und (2) wie eine E-Mail aussehen darf.

Ich weiß bei diesen Problem nur zwei Sachen: (1) das es nicht so einfach zu lösen ist, wie die meistens denken und (2) das Reguläre Ausdrücke zur Lösung des Problems helfen können, aber wahrscheinlich nicht alleine die Lösung stellen können.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
TSc
#4 Geschrieben am: Do 17.05.2007, 10:59 (+18:59)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 609
Mitglied seit: 8.11.2004


Wie wäre es denn mit:

"^[_a-zA-z0-9-](\.{0,1}[_a-zA-z0-9-])*@([a-zA-z0-9-]{2,}\.){0,}[a-zA-z0-9-]{2,}(\.[a-zA-Z]{2,4}){1,2}$"

Zumindest was den RegExp angeht sollte das sauberer sein.
Ob man sich bei der Prüfung einer Mail nur auf einen solchen verlassen sollte sei jetzt mal dahin gestellt.

Gruß,
Tom
Top
PMEmail Poster
Top
 
bowling-liga
#5 Geschrieben am: Do 17.05.2007, 12:00 (+01:01)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 56
Mitglied seit: 16.05.2007


Wenn man sich diesen Thread durchliest, wirkt die Idee, das mit einem regulaeren Ausdruck zu versuchen, irgendwie absurd.

Allerdings sollte man sich vielleicht fragen, was man wirklich will. Wenn die Adresse korrekt und erreichbar sein muss, braucht man ja eigentlich nur 'ne Nachricht an die Adresse zu schicken, so wie es bei der Anmeldung zum Forum zum Beispiel schon passiert.

den


--------------------
Top
PMEmail PosterUsers Website
Top
 
Sascha Ahlers
#6 Geschrieben am: Do 17.05.2007, 13:03 (+01:02)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
Mitglied seit: 27.12.2004


QUOTE (TSc @ Do 17.05.2007, 10:59)
"^[_a-zA-z0-9-](\.{0,1}[_a-zA-z0-9-])*@([a-zA-z0-9-]{2,}\.){0,}[a-zA-z0-9-]{2,}(\.[a-zA-Z]{2,4}){1,2}$"



Da kann ich solche E-Mail-Adressen nutzen:

1234567890123456789012345678901234567890123456789012345678901234567890@as.de
__@a--s--s.abcd

oder auch (als eine Mail-Adresse gesehen):

CODE
__@a--s--s.abcd
__@a--s--s.abcd


= zu diesen String (als PHP-Code dargestellt):
CODE
'__@a--s--s.abcd' . "\r\n" . '__@\na--s--s.abcd'


QUOTE
local-part
      The maximum total length of a user name or other local-part is 64
      characters.

   domain
      The maximum total length of a domain name or number is 255
      characters.

Quelle: RFC 2821 - Simple Mail Transfer Protocol




Aber nicht diese gültigen Adresse:

user+extension@domain.de
test@a.test.de
test@test.museum



Außerdem ist der Wertebereich A-z ziemlich problematisch, ich wüsste nicht auf anhieb, welche Zeichen da alles zugehören. Nach ISO/IEC 8859-1 wären das die folgenden Zeichen:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z

Ein einzelnes "-" müsste - bei sauberer Schreibweise - in eckigen Klammern escaped werden, da dieses normalerweise Wertebereiche makiert


@bowling-liga
Einen Sinn macht die Überprüfung schon, und wenn es nur darum geht zu überprüfen, dass keine ungültigen Zeichen eingegeben werden. Die Filterung von Benutzereingaben ist (insbesondere bei Webanwendungen) eine grundlegene Sicherheitsstrategie.





Ich würde eine grundlegende Überprüfung durchführen, sprich die E-Mail-Adresse zerlegen, auf die richtige länge prüfen, prüfen ob nur erlaube Zeichen in einen Teilbereich verwendent werden (dazu müssen alle gültigen Zeichen bekannt sein), ob die Adresse einen FQDN besitzt und ob auch entsprechende A-/MX-Record aufzufinden sind. Und was sonst noch im Bereich des Möglichen liegt.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
TSc
#7 Geschrieben am: Do 17.05.2007, 13:43 (+00:39)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 609
Mitglied seit: 8.11.2004


QUOTE (Sascha Ahlers @ Do 17.05.2007, 13:03)
QUOTE (TSc @ Do 17.05.2007, 10:59)
"^[_a-zA-z0-9-](\.{0,1}[_a-zA-z0-9-])*@([a-zA-z0-9-]{2,}\.){0,}[a-zA-z0-9-]{2,}(\.[a-zA-Z]{2,4}){1,2}$"



Da kann ich solche E-Mail-Adressen nutzen:

1234567890123456789012345678901234567890123456789012345678901234567890@as.de
__@a--s--s.abcd

Nicht ganz, es kann nur ein @ verwendet werden. Der Rest der Adresse wäre ja auch theoretisch möglich und daher ok das die durch die Prüfung geht


QUOTE (Sascha Ahlers @ Do 17.05.2007, 13:03)

oder auch (als eine Mail-Adresse gesehen):

CODE
__@a--s--s.abcd
__@a--s--s.abcd


= zu diesen String (als PHP-Code dargestellt):
CODE
'__@a--s--s.abcd' . "\r\n" . '__@\na--s--s.abcd'


QUOTE
local-part
      The maximum total length of a user name or other local-part is 64
      characters.

  domain
      The maximum total length of a domain name or number is 255
      characters.

Quelle: RFC 2821 - Simple Mail Transfer Protocol




Aber nicht diese gültigen Adresse:

user+extension@domain.de
test@a.test.de
test@test.museum


Stimmt, hier besteht noch Nachbesserungsbedarf.

QUOTE (Sascha Ahlers @ Do 17.05.2007, 13:03)

Außerdem ist der Wertebereich A-z ziemlich problematisch, ich wüsste nicht auf anhieb, welche Zeichen da alles zugehören. Nach ISO/IEC 8859-1 wären das die folgenden Zeichen:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z


Stimmt, das war ein Tippfehler von mir.
Müsste natürlich an allen Stellen heissen a-zA-Z0-9
Das kommt davon wenn man sowas "mal eben so" tippt...
Top
PMEmail Poster
Top
 
bowling-liga
#8 Geschrieben am: Do 17.05.2007, 13:48 (+00:05)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 56
Mitglied seit: 16.05.2007


Ich hatte obigen Thread eingelinkt, weil darin schon eine aehnliche Diskussion angestossen wurde. Ein gueltiger local-part enthaelt eben nicht nur Buchstaben von a-z, Zahlen, .-+ usw., sondern kann auch weitere Sonderzeichen und Leerzeichen enthalten, die dann entsprechend gequotet sind. Was eben bedeutet das " user !!! "@irgendeine_domain.de auch gueltig ist. Der domain-part ist mit Sicherheit einfacher zu parsen.

@Sascha Ahlers:
Allerdings glaube ich eben nicht daran, dass hier das Sicherheitsproblem so praesent ist, wenn man die ueblichen Vorsichtsmassnahmen beachtet, falls Du auf MySQL-Injection hinaus willst. Die Adresse zu zerlegen und die Laengen zu pruefen, halte ich auch fuer sinnvoll. Allerdings ist die Idee mit der DNS-Abfrage in der Praxis nicht so ganz ohne Probleme.

den


--------------------
Top
PMEmail PosterUsers Website
Top
 
Sascha Ahlers
#9 Geschrieben am: Do 17.05.2007, 14:17 (+00:28)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
Mitglied seit: 27.12.2004


QUOTE (bowling-liga @ Do 17.05.2007, 13:48)
[...] Was eben bedeutet das " user !!! "@irgendeine_domain.de auch gueltig ist. [...]

Die scheint nicht gültig zu sein (siehe rote Makierung), dieses Zeichen im nicht von der DeNIC erlaubt ist.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
bowling-liga
#10 Geschrieben am: Do 17.05.2007, 14:24 (+00:06)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 56
Mitglied seit: 16.05.2007


Danke fuer die Korrektur ... wink.gif

Cheers,
den.


--------------------
Top
PMEmail PosterUsers Website
Top
 
Sascha Ahlers
#11 Geschrieben am: Do 17.05.2007, 14:26 (+00:01)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1699
Mitglied seit: 27.12.2004


QUOTE (TSc @ Do 17.05.2007, 13:43)
QUOTE (Sascha Ahlers @ Do 17.05.2007, 13:03)
QUOTE (TSc @ Do 17.05.2007, 10:59)
"^[_a-zA-z0-9-](\.{0,1}[_a-zA-z0-9-])*@([a-zA-z0-9-]{2,}\.){0,}[a-zA-z0-9-]{2,}(\.[a-zA-Z]{2,4}){1,2}$"



Da kann ich solche E-Mail-Adressen nutzen:

1234567890123456789012345678901234567890123456789012345678901234567890@as.de
__@a--s--s.abcd

Nicht ganz, es kann nur ein @ verwendet werden. Der Rest der Adresse wäre ja auch theoretisch möglich und daher ok das die durch die Prüfung geht

Es wird doch nur jeweils ein @ verwendet, aber der Local-Part ist bei der oberen Adresse 70 Zeichen lang und in der unteren hat der Domain-Part 2x zwei aufeinanderfolgende Bindestriche, was nicht erlaubt ist.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
bowling-liga
#12 Geschrieben am: Do 17.05.2007, 14:42 (+00:16)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 56
Mitglied seit: 16.05.2007


Wobei die IDNs natuerlich mit xn-- anfangen koennen, falls man xn--mller-kva heisst ... biggrin.gif


--------------------
Top
PMEmail PosterUsers Website
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/18404

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Diskussion: Gibt es AdSense-Alternativen? Ayom-Team 5305 34 Mo 18.08.2008, 20:17
Diskussion: Login-Skript mit Sessions, PHP und ... Ayom-Team 159 2 Mo 11.08.2008, 03:33
Datenbankstruktur überprüfen und abgleichen BartTheDevil89 183 8 So 10.08.2008, 18:07
Schweizer Adresse überprüfen sylvia73 184 5 Fr 11.07.2008, 13:27
Diskussion: Wo gibt es gratis Schriften (fonts)? Ayom-Team 2099 9 Do 3.07.2008, 13:08
Diskussion: Flash-Anfänger - wo fängt man an? Ayom-Team 218 2 Di 6.05.2008, 17:00
Diskussion: Geocoding mit Google Map API (Koord ... Ayom-Team 185 1 Mi 16.04.2008, 08:18
Diskussion: Was ist ein Root-Server? Ayom-Team 282 1 Do 13.03.2008, 17:57
Diskussion: client-server call Tuemmel 295 5 Sa 8.03.2008, 16:17
Diskussion: Top 10 Affiliate Programme by Small-n- Ayom-Team 2623 9 Mi 27.02.2008, 12:54




Anzeige - [Interessiert an einer Anzeige?]



Anzeigen


[Interessiert an einer Anzeige?]