Christoph Schnauß: Spam-Versand über ein online-Formular

Beitrag lesen

hallo Forum,

ja, ich weiß, wir haben ein ganz ähnlich gelagertes Thema schon in Bearbeitung im Thread https://forum.selfhtml.org/?t=119369&m=765586. Ich sehe aber keine Möglichkeit, mich dort mittels "Threaddrift" anzuhängen und mache dann eben einen neuen auf.

Folgendes: seit rund einer Woche bekomme ich immer mal zwischen Mitternacht und 2 Uhr morgens eine Sendung von nahezu zeitgleich über mein online stehendes Formular an mich addressierte mails mit entweder gar keinem oder aber idiotischem Inhalt. Das sind so zwischen fünf und fünfzehn Stück, also noch lange keine "Masse" und bisher hab ich die Dinger stillschweigend gelöscht. Jetzt fange ich aber doch an, zu überlegen, ob ich nicht etwas dagegen unternehmen sollte und könnte - schließlich benutzen auch ernstzunehmende Leute mein Formular und wollen mir irgendwas mitteilen. Die "Boardmittel" scheinen allerdings nicht auszureichen.

Die erste Hürde könnte sein, daß ich meinen "mailer" tatsächlich "mail.php" genannt habe und der "bot" das Formular tatsächlich nur aufgrund seines Namens findet. Das ist derzeit aber ein reines HTML-Formular (es heißt bloß *.php), das ich eh überarbeiten wollte. Es ruft ein weiteres PHP-Script namens "senden.php" auf, und das wiederum prüft, ob ein Absendername, eine Absender-Mailadresse (die valide sein muß) und ein Text ins Formular eingetragen wurde - ein paar optionale Eintragungen (URL, Wohnort ...) dürfen auch noch gemacht werden. Nur wenn diese drei Voraussetzungen "name", "mail" und "text" erfüllt sind, kriege ich eine Benachrichtigung - und gleichzeitig bekommt der Absender ein "response".

So ... wenn jetzt also offensichtlich irgendein "bot" unterwegs ist, muß er diese drei Bedingungen auch erfüllen können, sonst schickt mir mein beim Provider liegendes Script ja gar nix. Ich habe in meinen logs nachgesehen: das Script "mail.php" ist tatsächlich mehrtausendfach aufgerufen, aber ebenfalls mehrtausendfach mit einem "Error 403" beantwortet worden. Trotzdem kommen ein paar ganz wenige "durch", deren Inhalt allerdings völliger Unsinn ist.

Ich habe mir ein paar von diesen unsinnigen mails aufgehoben und kann bei Bedarf vollständige Quelltexte zur Verfügung stellen einschließlich aller Header (Sober oder ein anderer Bösewicht war in keiner dieser mails enthalten). Interessant ist, daß bei den jüngsten Spam-mails dieser Art eine lange Liste mit mehreren hundert mail-Adressen angefügt ist. Trotzdem kriege ich in meinem "mailer" überhaupt nichts angezeigt - egal, ob ich mir das sogar in WindowsXP mit OE anschaue oder in FreeBSD unter KMail.

Alle diese mails, die über mein Formular bei mir eintrudeln, tragen im übrigen als Absenderadresse sowas Ähnliches wie "out4826@christoph-schnauss.de". Mein Provider hat mir durchaus die Möglichkeit eingeräumt, unter "XXXXX@christoph-schnauss.de" beliebig viele Mail-Accounts einzurichten, ich habe davon bisher aber gar keinen Gebrauch gemacht. Das heißt, es gibt keine reale mail-Adresse, die "XXX@christoph-schnauss.de" heißen kann, dafür existiert kein Konto.

Ich kann mich selber relativ leicht gegen den Empfang solchen Spams schützen. Und mein Provider hat seit ein paar Tagen aufgrund ähnlicher Probleme seine "Filter" umgestellt und präzisiert, es kommen ja bei mir auch immer nur einige ganz wenige von vielen tausend an. Trotzdem: wie schaffen "die" das dann, und was soll mir eine mail, in der nix andres steht als

out4826@christoph-schnauss.de
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: ivry distinguished painther iv modhren times
   bcc: battsl1005@aol.com
   3fe43b29ce27c839cc13d05f06b39ad6

sagen? Ich verstehe einfach nicht, was der Spamer von mir will bzw. wozu er meinen Provider zu mißbrauchen versucht.

Und schließlich: wie überwindet ein "bot" meine Abfragen und trägt immerhin in die Formularfelder etwas "Gültiges" ein, wenn ich alles mit regulären Ausdrücken in der Form

if ($_SERVER['QUERY_STRING'] == "temp" && $name && !preg_match("/[^a-zA-ZäöüÄÖÜß&; ]/",$name) && $text && !preg_match("/^[^a-zA-ZäöüÄÖÜ]/",$text) && !preg_match("/^[^http:\/\/]/",$url)) {  
...  
}

prüfen lasse? Das Ergebnis einer fehlerhaften Eingabe sollte jeder, der mir etwas zu mailen versucht, wegen

...  
if ($_SERVER['QUERY_STRING'] == "temp" && preg_match("/^[^a-zA-ZäöüÄÖÜ]/",$name)) {  
$kopftext = "<h3>Fehler: Namensangabe nicht korrekt</h3>"."\n".  
            "Ihre Namensangabe beginnt mit einem nicht zugelassenen Zeichen";  
} elseif ($_SERVER['QUERY_STRING'] == "temp" && preg_match("/[^a-zA-ZäöüÄÖÜß&; ]/",$name)) {  
$kopftext = "<h3>Fehler: ungültiges Zeichen im Namen</h3>"."\n".  
            "Ihr Name darf nur aus Buchstaben bestehen.";  
} elseif ($_SERVER['QUERY_STRING'] == "temp" && !$text) {  
$kopftext = "<h3>Fehler: kein Text eingegeben</h3>"."\n".  
            "Sie müssen schon Ihren Text eintragen. Nur die Angaben der mail-Adresse, des Wohnorts und einer URL sind optional.";  
} elseif ($_SERVER['QUERY_STRING'] == "temp" && preg_match("/^[^a-zA-ZäöüÄÖÜ]/",$text)) {  
$kopftext = "<h3>Fehler: Texteingabe nicht korrekt</h3>"."\n".  
            "Ihre Texteingabe beginnt mit einem an dieser Stelle nicht zugelassenen Zeichen";  
} elseif ($_SERVER['QUERY_STRING'] == "temp" && preg_match("/^[^http:\/\/]/",$url)) {  
$kopftext = "<h3>Fehler: URL nicht korrekt</h3>"."\n".  
            "Wenn Sie eine URL angeben möchten, so tun Sie das bitte in der Form <b>http://www.domainname.tld</b>.".  
            "Korrigieren Sie Ihre Angabe bitte entsprechend.";  
...  

und anderen Prüfungen (z.B. auf Validität der mail-Adresse) zu sehen bekommen, bei einem Fehler bricht das Script ab und sendet mir gar nix. Dieser "bot" schafft es trotzdem. Um 23.41 hat er mir exakt sieben unsinnige mails geschickt. Der Provider hat allerdings knapp 6500 geblockt.

Grüße aus Berlin

Christoph S.

PS: ihr müßt jetzt nicht unbedingt alle mein Formularscript daraufhin testen, ob es bei fehlerhaften Angaben tatsächlich nur Fehler meldet ... ;-)

--
Visitenkarte
http://www.christoph-schnauss.de
ss:| zu:) ls:& fo:) va:) sh:| rl:|