Kontaktformular - Spam

Chandini

Mitglied
Hi ihr,

welche Möglichkeiten gibt es, ein Kontaktformular sicher zu machen? Also damit es niemand dazu verwenden kann, irgendwelche Spammails zu schicken?

Ich verwende in meinem Kontaktformular htmlspecialchars für alle eingegebenen Werte (Name, E-Mail und Text). Die E-Mail-Adresse wird auch auf Gültigkeit überprüft (@ ja/nein und . ja/nein).
Das funktioniert soweit auch.

Nachdem ich heute früh allerdings an die 300 Mails in meinem Postfach hatte, muss da aber doch noch was anderes falsch sein oder?
Es kommen auch ständig weitere Mails rein, dass ich weiß nicht wie viele 1000 E-Mail-Adressen nicht erreicht wurden. Normalerweise kriegt der, der das Kontaktformular nutzt, nämlich noch eine Kopie seiner Nachricht. Aber wenn die E-Mail-Adresse nicht existiert, dann kommt das alles ja wieder zurück.

Hab auch schon ausprobiert, was passiert, wenn jemand bei der E-Mail-Adresse was in der Art eingibt:
email@adresse.de\nBCC: anderemail@adresse.de

Wenn ich diese Mail erhalte, steht als Absender genau das drin, was ich hier oben geschrieben habe. Die E-Mail geht aber auch nur an die erste der beiden E-Mail-Adressen raus.

Wie kann trotzdem jemand das Formular zum Spams versenden missbrauchen?

Hier ist mal mein Code, der die HTML-Zeichen entfernt und die Mail-Adresse kontrolliert und letztendlich alles abschickt:

PHP:
$nachricht = htmlspecialchars("$nachricht", ENT_QUOTES);
$nachrichtUser = htmlspecialchars("$nachrichtUser", ENT_QUOTES);
$name = htmlspecialchars("$name", ENT_QUOTES);
$email = htmlspecialchars("$email", ENT_QUOTES);

if(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email))
{ 
	if($name != "" AND $email != "" AND $nachricht != "")
	{
		mail($empfaenger, $betreff, $nachricht, "From: $name <$email>"); 
		mail($email, $betreffUser, $nachrichtUser, "From: $absenderName <$absender>");
		echo '<meta http-equiv="refresh" content="1; URL=index.php?section=kontaktan">';
	}
	else
	{
		echo '<meta http-equiv="refresh" content="1; URL=index.php?section=fehler">';
	}
} 
else 
{ 
	echo '<meta http-equiv="refresh" content="1; URL=index.php?section=fehleremail">';
}

Bin für jede Hilfe dankbar.

Viele Grüße,
Ines
 
Hallo Chandini,

mit Bilder kann man Formulare sichern. Bei fast jedem Registrierungsvorgang musst du heute die Zahlen auf den Bilder in ein Feld abtippen.

Funktionsweise wäre simple:

Die benötigste einige Bilder auf denn der Code dargestellt wird. In eine CSV, XML etc. kannst du dann die Information speichern, welches Bild welchem Code gehört. Wird das Formular abgeschickt, prüfst du, ob der Code zum Bild passt. Somit hättest du das Problem gelößt.

Sonst kenne ich jetzt auch keine Möglichkeit.

Gruss

Alexander
 
Hi Alexander,

das wäre fürs Kontaktformular selber schon nicht schlecht. Muss ich mir mal näher anschauen.

Ich habe auf der Homepage allerdings noch ein Formular, über das man sich für einen Newsletter anmelden kann. Da gibt man zwar keinen Text ein, sondern nur Name und E-Mail-Adresse, aber bei dem hatte ich auch schon mal das Pech, das da irgendwelche Spam-Mails rausgingen. Und da fände ich persönlich es etwas umständlich, wenn ich da auch erst Text von einem Bild aptippen muss.

Aber danke auf jeden Fall für den Tipp mit dem Bild. Ich werd's mal testen.

Viele Grüße,
Ines
 
Es gibt eigentlich nur eine Art, zu erörtern, ob eine E-Mail-Adresse nicht nur gültig ist, sondern auch existiert: Verschicke eine E-Mail und erwarte eine Antwort.

Der Weg könnte folgender sein:
Du speicherst die Daten zunächst in der Datenbank und versendest die Nachricht an den Absender. Da legst Du einen Link bei, mit dem die Nachricht freigeschaltet werden kann. Dafür musst Du natürlich auch einen zufälligen Aktivierungscode mit in die Datenbank speichern. Wird der Link angesurft, schickst Du die Nachricht an den Webmaster bzw. die Kontaktperson.

Das ist natürlich nicht Sinn und Zweck eines Kontaktformulars, für den Newsletter aber durchaus annehmbar mit einem Text wie z.B.: "Ihre E-Mail-Adresse wurde in unserem Newslettersystem eingetragen. Bitte bestätigen Sie den Wunsch unseren Newsletter zu empfangen, indem Sie folgende URL besuchen [LINK]. Wenn ein Dritter Ihre Adresse bei uns angegeben hat, können Sie diese Mail ignorieren und werden keine Newsletter von uns erhalten. Sollten sie diese E-Mail mehrfach unerwünscht von unserem Server zugesendet bekommen, setzen Sie sich bitte mit uns in Verbindung und wir sperren Ihre Adresse für unseren Newsletter."

Für das Kontaktformular bleibt eher die Unterscheidung zwischen Mensch und Maschine, wie bereits von igfas angesprochen wurde. Dazu gibt es die sog. Captchas, die Dir sicher auch schon das ein oder andere mal begegnet sind. Zu Captchas gibt es schon einige Threads hier im Forum und auch ein paar Bibliotheken, die sich über Google finden lassen sollten.

Gruß hpvw
 
Hallo hpvw!

Ja, das ist für den Newsletter bestimmt nicht verkehrt. Werd ich auch mal probieren. Dann hab ich ja erst mal einiges zu tun *g*

Mittlerweile bin ich bei über 1200 nicht zugestellten E-Mails, möcht nicht wissen, wieviel das noch werden.
Dadurch, dass jeder eine Kopie seiner Anfrage bekommt, hab ich überhaupt erst gesehen, an wieviele E-Mail-Adressen das gegangen sein muss.

Ich habe ja "nur" um die 300 Mails vom Kontaktformular direkt gekriegt. Aber durch die Bestätigungsmail, die natürlich wieder an mich zurückkommt, wenn die E-Mail-Adresse nicht existiert, habe ich erst mal gesehen, was da wirklich so passiert ist. Hilfe!

Es ist demjenigen, der den Mist verbrochen hat, wohl auch noch gelungen, einen Anhang (.txt-Datei) mit an die Mails mit anzuhängen. Wie ist denn das möglich, wenn htmlspecialchars eingesetzt wird?
Dann sollte man doch eigentlich auch keine Dateien oder ähnliches einbinden können oder täusch ich mich da?

Viele Grüße,
Ines
 
HTML-Sonderzeichen haben mit E-Mails relativ wenig zu tun.
Die normale E-Mail hat ein einfaches Textformat ohne Formatierung
Dateianhänge folgen auf den Text, somit lässt sich der Text auch zum Senden eines Anhangs missbrauchen.
Ein Mail-Mit-Attachment-Beispiel in den Kommentaren zu [phpf]mail[/phpf] gibt Dir vielleicht Hinweise auf mögliche Probleme.

Gruß hpvw
 
Also wie das in dem Beispiel von php.net so abläuft, konnte ich einigermaßen nachvollziehen.
Aber irgendwie steig ich nicht so ganz dahinter, wie das funktionieren soll, wenn irgendjemand was in das Textfeld reinschreibt.
Der weiß doch gar nicht, wie mein Mailskript aussieht und was da alles drin steht. Wie soll er dann auf diese Weise irgendwas ausführen lassen?

Vielleicht steh ich auch einfach grad auf der Leitung, weil ich vor lauter Spammails den Wald vor lauter Bäumen nicht mehr seh *g*

Viele Grüße,
Ines
 
Hallo,
ich hab da mal ne Frage, holst du dei Daten über GET oder POST Methode? Prüfst du ob die Schaltfläche geklickt wurde?

Der "Cracker" (kein Hacker ) wird vermutlich deine Seite direkt anstspreche und spart sich das Formularausfüllen, man kann ja in der Browserzeile Programmieren...

Könntest du mir den Link zu deiner Webseite schicken? Damit ich mir das mal anschauen kann?

Gruss

Alexander
 
igfas hat gesagt.:
ich hab da mal ne Frage, holst du dei Daten über GET oder POST Methode? Prüfst du ob die Schaltfläche geklickt wurde?
Das ist ziemlich egal, da man auch problemlos Post-Anfragen mit einem eigenen Programm senden kann.

igfas hat gesagt.:
Der "Cracker" (kein Hacker ) wird vermutlich deine Seite direkt anstspreche und spart sich das Formularausfüllen, man kann ja in der Browserzeile Programmieren...
Kann man nicht (außer vielleicht ein bisschen JavaScript, was dem Server aber egal ist), man kann nur eine Anfrage senden.

Gruß hpvw
 
Zurück