Marc Reichelt: E-Mail-Validierung: Neuer Ansatz

Beitrag lesen

Hallo dedlfix,

Mir ist nicht bekannt, dass mail() mit Nicht-ASCII-Zeichen umgehen und diese in Punycode wandeln könnte. Wenn dein SMTP-Server das auch nicht kann, müsstest du diese Verwendung ebenfalls unterbinden oder selbst eingreifen.

Das klingt logisch. Besteht hier eine Angriffsmöglichkeit? Wenn ja: Gibt es eine einfache Regel, um dies zu vermeiden? Das Verbieten aller Zeichencodes über 127 wird allerdings wohl auch dazu führen, dass E-Mail-Adressen der Form "mäxchen@example.com" nicht funktionieren - und die würde ich ungerne ausschließen wollen.

Wenn diese Regel eingefügt wird sieht meine Funktion übrigens derzeit wie folgt aus:

function testMail($str) {  
	if (!is_string($str) || strlen($str) > 255) {  
		// variable must be a string with a max. length of 255  
		return false;  
	} else if (strpos($str, '@') === false) {  
		// there must be an @  
		return false;  
	} else {  
		// check for invalid characters  
		for ($i = 0; $i < strlen($str); $i++) {  
			$c = $str[$i];  
			$cCode = ord($c);  
			  
			if ($cCode < 32) {  
				// control characters not allowed  
				return false;  
			}  
			  
			if (strpos('<>,;', $c) !== FALSE) {  
				// invalid characters  
				return false;  
			}  
			  
			if ($cCode > 127) {  
				// non-ascii characters not allowed  
				return false;  
			}  
		}  
	}  
	  
	return true;  
}

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
DPRINTK("Last time you were disconnected, how about now?");
        linux-2.6.6/drivers/net/tokenring/ibmtr.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)