Spam vermeiden

HugoHorst

New Member
Hallo,

leider kam es heute vor, dass die PHP mail() Funktion auf einem Server ausgenutzt wurde um Spam zu versenden. Das zuständige Skript konnte ich schnell ausfindig machen und so das Problem schnell eindämmen.

Um sowas in Zukunft vermeiden zu können frage ich mich ob es möglich ist, dass ich entweder auf PHP-Ebene oder auf Mailserver-Ebene (Postfix/Sendmail) eine Sperre einbauen kann die nur Mails von auf dem Server befindlichen Domains versendet? Oder gibt es andere Vorkehrungen/Ideen?

Danke für eure Hinweise
 
ich vermute mal, daß der Spam so auch über die Domain kam, vermutlich wurde ja nur dem regulären Script beliebige Daten per http-Post / Get untergeschoben.

Sowas kannst Du nur im Script per z.B. Captcha und anderen lustigen Überprüfungen abfangen, ob der gerade eben gemachte Aufruf "valide" ist.
 
Um Captchas zu vermeiden sehen meine Formulare so aus:

Code:
<input type="hidden" name="tstamp" value="<?php time(); ?>"
<input type="text" name="email" id="email"/>
<input type="text" name="a"/>
<input type="text" name="b"/>
...

Dazu dann noch mit css:

Code:
#email {
display:none;
}

Das bedeutet dass das Feld "email" für den Nutzer gar nicht sichtbar ist und er daher auch nix eingibt. Wenn doch etwas drin steht, wird die Abarbeitung abgebrochen. Außerdem prüfe ich mit dem timestamp-Feld wie lange die eingabe gedauert hat. Ein Skript schafft das in wenigen Sekunden, ein echter User brauch etwas länger. Im Schnitt lasse ich nur Formulare zu, die mindestens 5 Sekunden alt sind.
 
Generell würde ich den PHP-Mailer auf SMTP umstellen.

80% solcher User die deine Formulare anders nutzen als gedacht :) verwenden Bots, welche alle möglichen Seiten einfach nur nach Formularen scannen. Diese Bots füllen dann automatisch je nach Konfiguration die Felder aus, übergeben über entsprechende Parameter neue Empfängeradressen und ab geht's.

Das kannst du wie schon angegeben mit Captchas unterbinden. Auf meinen Websites baue ich zusätzlich ein "hidden" feld ein und prüfe dann beim abschicken mit ner einfachen if abfrage ob das feld ausgefüllt ist, wenn ja, schicke ich es nicht ab. Der Bot nämlich füllt ungesehen alle verfügbaren inputs aus, wenn dann mein "hidden" input feld ausgefüllt wurde schicke ich nicht ab.

Generell solltest du in Formularen wenn möglich "post" statt "get" verwenden um es "solchen Usern" nicht ganz offensichtlich zu offenbaren was du da an deinen Mailer übergibst.

Gruß tomiC
 
Back
Top