Seite 1 von 2

Formular sicher?

Verfasst: 02.08.2006, 11:38
von ole1210
Hallo Forum,

seit Tagen versuchen irgenwelche Gangster/Script-Kiddies ein Formular von mir zu missbrauchen. Bisher zum Glück erfolglos. Kann mir kurz jemand sagen ob das Ding sicher ist, oder ob die über Kurz oder Lang erfolg haben werden?

Code: Alles auswählen

<?php

$youremail= "info@domain.de";

if &#40;&#40;$name!=""&#41; && &#40;$tel!=""&#41; && &#40;$email!=""&#41;&#41; &#123;

Name&#58; $name\n
Vorname&#58; $Vorname\n
Email&#58; $email\n
Tel.&#58; $tel\n
Nachricht&#58; $nachricht\n

$subject2 = "Ihre Anfrage bei $chain -- Autoresponse";

$message2 = "Vielen Dank fuer Ihre Online Anfrage.\n Sie wird sofort zuegig bearbeitet.\n\n
Mit freundlichen Gruessen\n\n Ihr $chain-Team\n";


mail&#40;$youremail,$chain,$message,'FROM&#58; '.$email&#41;;
mail&#40;$email,$subject2,$message2,'FROM&#58; '.$youremail&#41;;
print "<html><head><title>Vielen Dank!</title></head>\n";
print "<body><h1>Vielen Dank!</h1><br>Vielen Dank f&uuml;r Ihr Vertrauen in $chain! \n";
print "Ihre Anfrage wird sofort z&uuml;gig bearbeitet.<br>\n</body></html>";

&#125;

else &#123;

print "<html><head><title>Wichtige Angaben fehlen</title></head>\n";
print "<body><h1>Fehler! Wichtige Angaben fehlen!</h1><br>\n";
print "Damit wir Ihre $art schnell und korrekt bearbeiten k&ouml;nnen,<br>\n";
print "ist die Angabe des <b>Namen</b>, <b>Email</b> und der <b>Telefonnummer</b> zwingend erforderlich.<br><br>\n";
print "Sie kommen mit der Zur&uuml;ck-Taste zur Eingabemaske zur&uuml;ck.<br>\n";
print "</body></html>\n";

&#125;

?>
Danke!!

Viele rüße

Ole

Verfasst:
von

Verfasst: 02.08.2006, 15:23
von marc75
if (($name!="") && ($tel!="") && ($email!="")) {

Name: $name\n
Vorname: $Vorname\n
Email: $email\n
Tel.: $tel\n
Nachricht: $nachricht\n
produziert das nicht ein Error?

Verfasst: 02.08.2006, 15:41
von ole1210
Nö!

Verfasst: 02.08.2006, 15:57
von marc75
Nö!
Wie hast du denn dein PHP eingestellt?

Eigentlich müsste dein Code oben ein Parse error produzieren.

Re: Formular sicher?

Verfasst: 02.08.2006, 16:08
von oldInternetUser
ole1210 hat geschrieben:

Code: Alles auswählen

mail&#40;$youremail,$chain,$message,'FROM&#58; '.$email&#41;;
mail&#40;$email,$subject2,$message2,'FROM&#58; '.$youremail&#41;;
Ich verwende zwar kein PHP. Aber nach dem, was ich mal gelesen habe, sind die oberen Zeilen katastrophal. Der letzte Parameter enthält zusätzliche Header, $email stammt aus der Eingabe - also können zusätzliche Header und zwei Returns angefügt werden - dann müßte das der neue Body werden. Dann mag zwar die zweite Zeile crashen - aber das macht ja nichts, wenn mit der ersten schon Massenmails versandt wurden.

Also: Sorge dafür, daß da nur eine Mailadresse drinsteht - nichts sonst.

Bei DrWeb gab es mal einen Artikel darüber.

Verfasst: 02.08.2006, 16:08
von ole1210
Ich hab mein PHP gar nicht eingestellt. Nutze das so, wie es von 1und1 geliefert wird! Habe dieses Formular seit mehrerern Jahren praktisch unverändert im Einsatz. Läuft einwandfrei und wird jeden Tag zwischen 30 und 50 Mal versendet!

Re: Formular sicher?

Verfasst: 02.08.2006, 18:07
von robo
ole1210 hat geschrieben:seit Tagen versuchen irgenwelche Gangster/Script-Kiddies ein Formular von mir zu missbrauchen.
Inwiefern?
ole1210 hat geschrieben:Bisher zum Glück erfolglos. Kann mir kurz jemand sagen ob das Ding sicher ist, oder ob die über Kurz oder Lang erfolg haben werden?
Das Ding ist total unsicher! Siehe Antwort von oldInternetUser.

Allerdings ist es viel zu umständlich, dafür zu sorgen, dass in der Variable nur eine Mailadresse drinsteht. Es ist viel einfacher, dafür zu sorgen, dass KEIN Zeilenumbruch drinsteht, bzw. wenn ein Zeilenumbruch drinsteht, einfach einen 403 auswerfen und fertig.

siehe https://www.abakus-internet-marketing.d ... tml#240403

cu, Robo :)

Verfasst: 02.08.2006, 18:46
von ole1210
@ robo:
Dein Code hilft bisher sehr gut um Spam im Kontaktformular zu unterbinden.

Jetzt geht es aber nicht um Spam. Es wird immer versuch nen BCC einzuschmuggeln. Bisher erfolglos. Aber wahrscheinlich nicht mehr lange. Das würde ich gerne verhindern!

Verfasst: 02.08.2006, 18:53
von oldInternetUser
ole1210 hat geschrieben:Jetzt geht es aber nicht um Spam. Es wird immer versuch nen BCC einzuschmuggeln. Bisher erfolglos. Aber wahrscheinlich nicht mehr lange. Das würde ich gerne verhindern!
Das sind doch genau die zusätzlichen Mail-Header.

Google mal nach 'Mail Header Injection', da kommt der DrWeb-Artikel zuerst und kapiere, worin das Problem besteht.

Wenn das erst im eigentlichen Mailbody steht, dann ist es harmlos.

Verfasst: 02.08.2006, 19:07
von ole1210
Perfekt. Ich denke mit diesem Artikel komme ich weiter und kann das Problem entfernen.

Noch ist nichts passiert. Das sehe ich an den Logfiles!

Verfasst: 02.08.2006, 20:32
von robo
ole1210 hat geschrieben:@ robo:
Dein Code hilft bisher sehr gut um Spam im Kontaktformular zu unterbinden.

Jetzt geht es aber nicht um Spam. Es wird immer versuch nen BCC einzuschmuggeln. Bisher erfolglos. Aber wahrscheinlich nicht mehr lange. Das würde ich gerne verhindern!
Und genau dagegen hilft der Code auch!

Um ein BCC einzuschmuggeln, muss direkt vor dem BCC ein Zeilenumbruch eingeschmuggelt werden, und genau das überprüft der Code doch!

Der DrWeb-Artikel erklärt das zwar schön, aber die Lösung ist viel zu umständlich! Wieso soll ich lange irgendwelche Zeichen filtern? Um ein BCC einzuschmuggeln, brauche ich einen Zeilenumbruch, und den kann man per Browser in einem Input-Feld nicht eingeben. Wenn also ein Zeilenumbruch aus einem Input-Feld kommt, steckt irgendein böswilliger Angriff dahinter. Darum in dem Fall Fehlermeldung ausgeben und Script abbrechen, fertig.

cu, Robo :)

Verfasst: 03.08.2006, 10:54
von ole1210
Aha! Dann werde ich das jetzt mal in alle Formulare einbauen, und nicht nur in die wo ich nen akutes Spam-Problem habe.

Hatte einfach nen Denkfehler!

Danke!

Verfasst: 03.08.2006, 12:13
von marc75
Ich hab mein PHP gar nicht eingestellt. Nutze das so, wie es von 1und1 geliefert wird! Habe dieses Formular seit mehrerern Jahren praktisch unverändert im Einsatz. Läuft einwandfrei und wird jeden Tag zwischen 30 und 50 Mal versendet!
beim besten willen, folgende Zeilen produzieren bei mir immer ein Error:

Code: Alles auswählen

Name&#58; $name\n 
Vorname&#58; $Vorname\n
Name oder auch Vorname sind ja keine Konstanten, in einer Variable stehen diese Zeilen ja auch nicht, kein abschliessendes ; etc.


@robo
Allerdings ist es viel zu umständlich, dafür zu sorgen, dass in der Variable nur eine Mailadresse drinsteht. Es ist viel einfacher, dafür zu sorgen, dass KEIN Zeilenumbruch drinsteht, bzw. wenn ein Zeilenumbruch drinsteht, einfach einen 403 auswerfen und fertig.
Kann mich irren, aber das message Feld sollte man ja auch prüfen und diese haben meist Zeilenumbrüche.

Verfasst: 03.08.2006, 13:02
von robo
marc75 hat geschrieben:
Allerdings ist es viel zu umständlich, dafür zu sorgen, dass in der Variable nur eine Mailadresse drinsteht. Es ist viel einfacher, dafür zu sorgen, dass KEIN Zeilenumbruch drinsteht, bzw. wenn ein Zeilenumbruch drinsteht, einfach einen 403 auswerfen und fertig.
Kann mich irren, aber das message Feld sollte man ja auch prüfen und diese haben meist Zeilenumbrüche.
Du kannst mit der Methode natürlich keine Daten aus Textarea-Feldern prüfen, denn diese enthalten in der Regel Zeilenumbrüche. Das ist aber nicht weiter tragisch, denn Daten aus Textarea-Feldern wie eben das message-Feld kommen normalerweise auch nicht in den Header der Mail rein, sondern in den Body. Und darüber kann man keinen Spam an Dritte versenden.

cu, Robo :)

Verfasst: 03.08.2006, 13:26
von kaisen
wie kann ich bitte in ein input textfeld einen zeilenumbruch einfügen?
Indem ich da "test test \n " reinschriebe?