phpbar.de logo

Mailinglisten-Archive

[php] Frage zur Funktion urldecode()

[php] Frage zur Funktion urldecode()

Yannik Hampe yannik at cipher-code.de
Mon Okt 5 20:02:33 CEST 2009



Armin Briatta wrote:
> Hallo Yannik,
> 
> 
> Mir geht es darum, Zeilenumbrüche abzufangen, die über eventuell 
> manipulierte Formulare ankommen. Diese haben ja bei E-mail-Adressen, 
> Namen, Ortsangaben oder Ähnlichem nichts zu suchen.

Das im Text der Email Zeilenumbrüche vorkommen ist ja normal. Ich gehe 
mal davon aus, dass wir nur von der Emailadresse reden, die nachher im 
From-Header stehen soll (eine Ortsangabe erscheint mir aktuell nicht 
schlüssig).
> 
> Wenn ich nun eine E-mail als Bestätigung für den Empfang der 
> Formulardaten an den Absender schicke, möchte ich sicher sein, dass 
> keinerlei Manipulationen des mail-headers stattfinden können.
> 
> Zur Zeit prüfe ich alle Eingaben in einzeilige Felder wie folgt:
> 
> $_correct_string = stripslashes ($_original);
> $_correct_string = strip_tags($_correct_string);
> $_correct_string = trim($_correct_string);
> $_correct_string = htmlspecialchars ($_correct_string, ENT_QUOTES, 
> "UTF-8");	
> $_correct_string = urldecode($_correct_string);	

Es macht zwar Sinn zu überprüfen ob die Emailadresse gültig ist, aber 
welches Benehmen von deinem Skript erwartest du, wenn die Emailadresse 
ungültig ist?
Ich würde jedenfalls wollen, dass das Skript mit einer Fehlermeldung 
sofort abbricht und nicht noch versucht die Emailadresse so lange zu 
ändern, bis sie von der Syntax her theoretisch richtig ist.
Daher würde ich zu so etwas greifen:
if (!preg_match('/^\S+$/', $emailadresse)) exit('Emailadresse ist doof');
(Über den genauen regex könnte man jetzt noch eine Weile diskutieren, 
die Version hier wäre wohl die einfachste die noch sicherstellen sollte, 
dass es nicht möglich ist zusätzliche header zu spezifizieren). 
Natürlich kann man noch ohne Ende Müll eingeben, aber mir fällt nichts 
ein, womit man ernsthaft Schaden anrichten könnte...

Deine Befehle machen zwar einige lustige Sachen, mit denen du eventuell 
etwas Verwirrung stiften kannst, aber ein Barriere gegen irgend eine 
Arte von Angriff kann ich ehrlich gesagt darin nicht erkennen.
> 
> Dann prüfe ich die einzeiligen Felder noch per regulärem Ausdruck, je 
> nach Feld strenger oder lockerer.

Jo, das reicht dann auch. Oder sagen wir mal lieber: Das ist der 
interessante Teil.
> 
> Viele Grüße
> Armin

Yannik

php::bar PHP Wiki   -   Listenarchive