Datenschutzerklärung

Per PHP aufgerufenes Kontaktformular wird missbraucht

Validome - Forum

Startseite Validome
RSS 2.0  
Sie sind nicht angemeldet. Atom 1.0  
Forum Home / Sonstige Technologien /

Per PHP aufgerufenes Kontaktformular wird missbraucht

  Beitrag schreiben
Autor
Beitrag Seiten: 1
Glödu
Mitglied

Registriert: 17.08.2006
Beiträge: 9
Hallo zusammen!

Vor einiger Zeit baute ich in meine Website ein per PHP aufgerufenes Kontaktformular ein, gemäss der in Stefan Münz Buch Professionelle Websites gegebenen Anleitung.

Bis vor kurzem hatte das auch wunderbar funktioniert. Doch seit einigen Tagen werde ich von hunderten eMails überschwemmt, welche an die in kontakt.php festgelegte eMail-Adresse und über den von mir benutzten Mail-Server (aber nicht mit dem von mir festgelegten Betreff) an mich verschickt werden. Offenbar will mir jemand etwas beweisen oder mich einfach belästigen.

Mir ist nicht klar, wie der/die das überhaupt fertigbringt/en, da ich selbst es per Browser nicht schaffe, Einblick in die in der PHP-Datei angegebenen Daten zu bekommen.

In einem Archiv kontakt gibt es drei Dateien: kontaktformular.html, danke.html und kontakt.php. Die PHP-Datei beginnt so:

<?php
$mailto = "meine@adresse.org";
$form_file = "kontaktformular.html";
$thanks_file = "danke.html";
$standard_legend = "Text";
$error_legend = "Text";

usw.

Das Formular in der Datei kontaktformular.html beginnt mit folgenden Angaben:

<form action="[%pfad%]" method="post" accept-charset="UTF-8" onsubmit="return formular_pruefen()">
<fieldset>
<input type="hidden" name="return" value="danke.html" />
<input type="hidden" name="subject" value="festgelegter Betreff" />

Danach folgen weitere Eingabefelder.

Weshalb kann jemand meinen Mails-Server so für seine Zwecke benutzen? Was kann ich dagegen tun?

Und noch eine Nebenfrage: Im Betreff kann ich keine Umlaute benutzen, denn diese kommen dann im Mail-Client unlesbar an. Warum ist das so?

Danke für eure hilfreichen Antworten.

Beitrag geändert von Glödu (25.09.2006 00:05:26)


24.09.2006 19:05:26
  Beitrag schreiben
dkdenz
Administrator

Ort: Lübeck
Registriert: 25.04.2005
Beiträge: 765
Hallo.
Eventuell handelt es sich bei dem von Dir beschriebenen Problem um einen häufig vorkommenden Fall von E-Mail-Injektion ( http://de.wikipedia.org/wiki/Email_Injection ).
Unter dem Suchbegriff gibt es eine Menge via Google zu erfahren.
Viel Spaß noch...


24.09.2006 19:30:31
http://dkmd.de | http://dkdenz.de Beitrag schreiben
haka
Mitglied

Ort: Emden
Registriert: 01.08.2006
Beiträge: 22
Die Schwachstelle ist das Feld Subject. Entweder fest in den Code schreiben und auf Absätze prüfen. Mit Absätzen kann Code in den Emailheider eingeschleust werden:

if(preg_match("'(\r|\n)'", $subject))
  die();


_______________________________________
PHP Trawler Web CMS - http://trawler.msdazu.de
CMSBlog - http://cmsblog.msdazu.de

27.09.2006 11:45:43
http://cmsblog.msdazu.de Beitrag schreiben
Glödu
Mitglied

Registriert: 17.08.2006
Beiträge: 9
Beim beschriebenen Problem hatte es sich tatsächlich um eMail-Injection gehandelt. Die im Internet dazu gefundenen Lösungsvorschläge waren vielfältig, und – um zu verstehen, was ich tue – musste ich mich zuerst ein wenig in PHP einarbeiten.

Der erste Lösungsversuch war ein leeres und durch CSS unsichtbar gemachtes Eingabefeld im Kontaktformular einzubauen. Das PHP-Script sollte die Mitteilung nur abschicken können, wenn das anfangs leere und unsichtbare Feld immer noch leer bleib. Trotz dieser Massnahme wurden aber weiterhin unerwünschte Werbe-eMails über mein Kontaktformular verschickt.

Unbefriedigend an dieser Lösung war zudem, dass das leere Feld, welches leer bleiben musste, ohne CSS sichtbar war. Also musste eine andere Lösung her.

Unterdessen bin ich zwar immer noch PHP-Neuling, habe nun jedoch eine Lösung zusammengebastelt, die bis jetzt zu funktionieren scheint.

Einer meiner Fehler war gewesen, den Betreff im HTML-Dokument festzulegen. Dieser ist jetzt wie alle andern Angaben auch im PHP-Script integriert.

Die einzeiligen Eingabefelder werden auf eventuell vorkommende, eingeschleuste Zeilenumbrüche überprüft. Das mehrzeilige Textfeld für die Mitteilungen wird auf Ausdrücke wie to:, cc: und bcc:, aber auch auf Worte wie V i a g r a und ähnliches kontrolliert. Wenn keine dieser Eingaben vorkommt und auch alle andern Eingaben als richtig anerkannt werden, kann die Mitteilung verschickt werden.

Danke für die hier gegebenen Tipps!


30.09.2006 17:16:12
  Beitrag schreiben
Seiten: 1   Beitrag schreiben
Wechsel zu

Valid HTML 4.01