Hallo!
BTW: Die potenziell "gefährliche" Benutzerangabe von Absendername und -adresse ist doch im Normalfall ein Name und eine Emailadresse. Beides enthält (meines Wissens nach) nie einen Doppelpunkt.
Du irrst. Siehe RFC2822, ich zitiere:
<zitat>
2.2. Header FieldsHeader fields are lines composed of a field name, followed by a colon
(":"), followed by a field body, and terminated by CRLF. A field
name MUST be composed of printable US-ASCII characters (i.e.,
characters that have values between 33 and 126, inclusive), except
colon. A field body may be composed of any US-ASCII characters,
except for CR and LF. However, a field body may contain CRLF when
used in header "folding" and "unfolding" as described in section
2.2.3. All field bodies MUST conform to the syntax described in
sections 3 and 4 of this standard.
</zitat>Während der Doppelpunkt im Headerfeldnamen nicht vorkommen darf, ist der Doppelpunkt im Body erlaubt.
Der Punkt ist doch, dass zwischen dem field name und dem field body _immer_ ein Doppelpunkt stehen _muss_. Daher wäre für mich unter dem Sicherheitsaspekt die Eingabe eines Doppelpunkts seitens des Users im Formular ein Ausschlusskriterium.
Bitte beachte, dass der local-part einer E-Mail-Adresse ein quoted-string sein kann und daher auch den Doppelpunkt enthalten kann, siehe diesen Archivbeitrag von Cheatah und Validierung von E-Mail-Adressen im Selfforumssieb.
Dieser wiederum ist aber in jeder Header-Angabe erforderlich. Wäre es demnach nicht eine Möglichkeit, neben den Zeilenumbrüchen, auch nach dem Vorhandensein eines solchen zu suchen, und dann die Eingabe nicht zu akzeptieren/verarbeiten?
Nein. Du willst also viele zulässige E-Mail-Adressen und Headerinhalte ausschließen. Das ist keine gute Idee.
1. Wieso Headerinhalte? Die Benutzer _sollen_ ja wohl _keine_ Headerangaben selbst in das Formular eintragen.
2. Und ja, im local part einer Emailadresse wäre auch der Doppelpunkt erlaubt (allerdings müsste der local-part dann entweder in doppelte Anführungsstriche eingeschlossen werden oder der Doppelpunkt durch einen vorangestellten Backslash escaped werden).
Und genau hier sehe ich einen gravierenden Unterschied zwischen Theorie und Praxis, bzw. den Sicherheitsanforderungen eines Webmasters.
Und ja, ich sehe es durchaus als vertretbar an, wenn man Emailadressen, die einen Doppelpunkt enthalten, zurückweist (zumindest bei einem Kontaktformular)! Denn wie oft wird daran das Zutsandekommen einer Kommunikation in der Praxis wirklich scheitern? Kann man nicht eher davon ausgehen, dass User mit einer solchen Emailadresse (mit Doppelpunkt) auch noch mind. eine Alternative ohne haben? Ich glaube schon, denn ansonsten dürften diese Leute eh des öfteren erhebliche Probleme haben, da es seit Jahren durchaus gängige Praxis im Web ist, Adressen in dieser Form zu überprüfen. Und da spielen die RFCs eben keine Rolle.
Gruß Gunther