Spider oder Bots - was tun?
DanielE
Hallo Leute,
ich betreibe eine kleine Firmen Website im Netz in dieser Seite gibt
es auch ein Kontaktformular (PHP).
Seit einiger Zeit wird dieses Formular von einem Script öfters ausgefüllt und versendet. Zumindest glaube ich das.
Folgendes kommt in unterschiedlichen Varianten bei mir als E-Mail an.
(Ich habe aus meiner echten Domain "meinDomain" gemacht)
--------------------------------------------------
Name: tickets4270@meinDomain.de
Strasse: tickets4270@meinDomain.de
PLZ: vignettes
Content-Type: multipart/alternative; boundary=f9ac28b1638fd8e4d69e89af94910726
MIME-Version: 1.0
Subject: have, however, that little
bcc: er
This is a multi-part message in MIME format.
--f9ac28b1638fd8e4d69e89af94910726
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
end but that did not trouble him on the contrary, it had lain very heavy upon his heart that he was not to be a fifer. is highest wish had been to see himself as a regimental fifer, and then
--f9ac28b1638fd8e4d69e89af94910726--
.
Ort: tickets4270@meinDomain.de
Telefon: tickets4270@meinDomain.de
Telefax: tickets4270@meinDomain.de
E-Mail: tickets4270@meinDomain.de
Frage: tickets4270@meinDomain.de
-------------------------------------------------
Sagt Euch das irgendwas? Wird mein Formular als Spamsender missbraucht? Oder was will dieser tlccooperfamlly@aol.com erreichen?
Wenn man nach diesem Namen Googlet findet man viele Gästebücher und Kommentare in Blogs in denn das selbe steht wie in meiner Kontaktformular Mail.
Im PHP nutze ich die Funktion
<?
mail($admin, $betreff, $content, $header);
?>
zum versenden. Ich überprüfe vor dem Versand ob alle Felder ausgefüllt sind. Mehr aber nicht.
Was denkt Ihr was hier passiert oder welchen Sinn das macht?
Vielen Dank,
Daniel
Hallo DanielE,
(Ich habe aus meiner echten Domain "meinDomain" gemacht)
Toll, dein Namensvetter, dem diese Domain gehört bekommt ab sofort Spam an die von dir angegebene Adresse. Nutze für Beispieldomains künftig bitte example.org, die ist dafür reserviert.
Im PHP nutze ich die Funktion
<?
mail($admin, $betreff, $content, $header);
?>zum versenden. Ich überprüfe vor dem Versand ob alle Felder ausgefüllt sind. Mehr aber nicht.
Das heißt, du verwendest ungeprüft, was per POST übermittelt wird und ich kann über dein Formular an beliebige Adressen Spam senden? Das solltest du schleunigst unterbinden bevor es dein Hoster tut bzw. du als Spamschleuder bekannt und damit geblockt wirst:
Der Empfänger ist hier fest verdrahtet.
Grüße
Roland
Toll, dein Namensvetter, dem diese Domain gehört bekommt ab sofort Spam an die von dir angegebene Adresse. Nutze für Beispieldomains künftig bitte example.org, die ist dafür reserviert.
Das wußte ich nicht und tatsächlich habe ich soweit nicht gedacht.
Werde es mir aber hinter die Ohren schreiben und zukünftig beherzigen.
Das heißt, du verwendest ungeprüft, was per POST übermittelt wird und ich kann über dein Formular an beliebige Adressen Spam senden?
Nein eigentlich nicht. Natürlich ist der Empfänger, Bcc & Ccc definiert.
Der Empfänger ist hier fest verdrahtet.
Bei mir ja eigentlich auch. Ich sehe keine relevanten Unterschiede zwischen Deinem Mailer und meinem. Oder?
if(empty($_REQUEST['name'])){$name="";} else{$name=$_REQUEST['name'];}
if(empty($_REQUEST['strasse'])){$strasse="";} else{$strasse=$_REQUEST['strasse'];}
if(empty($_REQUEST['plz'])){$plz="";} else{$plz=$_REQUEST['plz'];}
if(empty($_REQUEST['ort'])){$ort="";} else{$ort=$_REQUEST['ort'];}
if(empty($_REQUEST['tel'])){$tel="";} else{$tel=$_REQUEST['tel'];}
if(empty($_REQUEST['fax'])){$fax="";} else{$fax=$_REQUEST['fax'];}
if(empty($_REQUEST['mail'])){$mail="";} else{$mail=$_REQUEST['mail'];}
if(empty($_REQUEST['text'])){$text="";} else{$text=$_REQUEST['text'];}
if(empty($_REQUEST['senden'])){$senden="";} else{$senden=$_REQUEST['senden'];}
if(empty($_REQUEST['fehler'])){$fehler="";} else{$fehler=$_REQUEST['fehler'];}
$admin = "info@example.org"; // die Mail
$header = "From: $name <$mail>\nContent-Type: text/plain; charset=ISO-8859-1\n";
$header .= "BCc: info@example.org\n";
$header .= "Ccc: info@example.org\n";
$betreff = "Anfrage über Website www.example.org"; // der Betreff
$content = "Name: $name\n";
$content .= "Strasse: $strasse\n";
$content .= "PLZ: $plz\n";
$content .= "Ort: $ort\n";
$content .= "Telefon: $tel\n";
$content .= "Telefax: $fax\n";
$content .= "E-Mail: $mail\n";
$content .= "Frage: $text\n";
Gruß Daniel
Hi,
if(empty($_REQUEST['mail'])){$mail="";} else{$mail=$_REQUEST['mail'];}
Du vergißt, daß hier durchaus ein Zeilenumbruch eingeschmuggelt werden kann und dann aus:
$header = "From: $name <$mail>\nContent-Type: text/plain; charset=ISO-8859-1\n";
z.B. "From: $name <$mail>\nBCC: spam@example.org\nContent-Type: text/plain; charset=ISO-8859-1\n";
werden kann.
freundliche Grüße
Ingo
Hi,
if(empty($_REQUEST['mail'])){$mail="";} else{$mail=$_REQUEST['mail'];}
Du vergißt, daß hier durchaus ein Zeilenumbruch eingeschmuggelt werden kann und dann aus:
$header = "From: $name <$mail>\nContent-Type: text/plain; charset=ISO-8859-1\n";
z.B. "From: $name <$mail>\nBCC: spam@example.org\nContent-Type: text/plain; charset=ISO-8859-1\n";
werden kann.
freundliche Grüße
Ingo
Danke für den Hinweis. Aber wie könnte ich das verhindern?
Gruß Daniel
Hi,
Danke für den Hinweis. Aber wie könnte ich das verhindern?
eine Möglichkeit hatte ich Dir genannt: keine Usereingaben außerhalb des Mail-Bodies.
Die andere wäre, die Eingaben gründlich zu filtern.
freundliche Grüße
Ingo
Hi,
$header .= "Ccc: info@example.org\n";
Ccc: gibt es nicht - Carbon Copy hat nur 2 C ...
cu,
Andreas
Moin DanielE,
ich betreibe eine kleine Firmen Website im Netz in dieser Seite gibt
es auch ein Kontaktformular (PHP).Seit einiger Zeit wird dieses Formular von einem Script öfters ausgefüllt und versendet. Zumindest glaube ich das.
ich hatte das gleiche Problem und habe es mit einem versteckten Feld gelöst.
Baue in Dein Formular eine Textarea ein und verpasse dieser mit CSS ein <style="display:none;">
Der "normale" Anwender wird dieses Feld nicht sehen und kann es daher nicht ausfüllen. Der BOT wird es sehen und sehr wahrscheinlich ausfüllen.
Du mußt nun nur noch prüfen, ob das Feld gefüllt ist, und wenn dem so ist, die E-Mail nicht abschicken.
regds
Mike©
Du mußt nun nur noch prüfen, ob das Feld gefüllt ist, und wenn dem so ist, die E-Mail nicht abschicken.
Hallo Mike,
die Idee gefällt mir, einfach und wahrscheinlich effektiv. Vielen
Dank für den Tipp - das werde ich ausprobieren.
Gruß Daniel