Ashura: Missbrauch von Formularen zum Spam-Versand

Beitrag lesen

Hallo Powl.

Wenn in ein input "\r\nBCC bla@bla.bla" eingegeben wird, liegen diese Zeichen im $_POST['wasimmer'] string doch als ASCII Zeichen vor, oder liege ich falsch.

Nein, da liegst du völlig richtig.

Mittels stripslashes werden die "" Backslashes entfernt, und der String $_POST['wasimmer'] enthält nur noch "rnBCC bla@bla.bla".
Sofern ich nicht irgendwas übersehen habe, sollte das seinen Zweck erfüllen, oder vertehe ich da etwas falsch?

Wie du selbst sagst, entfernst du hier lediglich die ASCII-Zeichen.
Der Wert „\r\nBCC …“ aus einem Eingabefeld enspricht tatsächlich dem, was eingegeben wird. Besagte Steuerzeichen hast du damit nicht eingefügt. Dafür könntest du bspw. folgendes in deiner Adresszeile ausführen:

javascript:document.getElementsByTagName('input')[0].value+="\r\nBCC: …";

Damit würdest du tatsächlich die Steuerzeichen für den Zeilenumbruch in das einzeilige Formularfeld einfügen. Sichtbar wird es aber höchstens als ein Leerzeichen. Wertest du diesen Wert nun serverseitig aus, wirst du sehen, dass nur bei letzterer Methode ein tatsächlicher Zeilenumbruch eingefügt wird, wohingegen bei der blanken Eingabe der ASCII-Zeichen nichts dergleichen bzw. wirklich nur die Zeichen selbst zu sehen ist.

PHP grast hier (glücklicherweise) nicht automatisch eingegebene Zeichen nach möglichen Steuerzeichen ab und erzeugt sie.

Die Eingabe der Steuerzeichen per maskierendem Backslash stellt lediglich eine Eingabevereinfachung dar, da es andernfalls so gut wie unmöglich wäre, Steuerzeichen einzugeben.

Einen schönen Samstag noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]