Zitat von cosinus
Beitrag anzeigen
Schutz vor Spamversand - geht,s auch einfacher?
Einklappen
X
-
Ja, das sieht ziemlich verzweifelt danach aus. Aber das wenigste davon ist logisch. Wie gesagt, wenn du alles nach einem Umbruch abschneidest, reicht das schon. Dadurch kann man keine bösen Header injizieren.
-
Ich gebe zu, die letzte zeile habe ich gegoogelt...
Was hältst Du hiervon?
Ich will nur ganz sicher gehenPHP-Code:function cleanEmail($value)
{
$value = preg_replace("/(Content-Transfer-Encoding:|MIME-Version:|content-type:|"
."Subject:|to:|cc:|bcc:|from:|reply-to:)/ims", "", $value);
$value = preg_replace("/(<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r).*/ims", "", $value);
return $value;
}
// aufruf mit:
mail(cleanEmail($mail), cleanEmail($betreff), cleanEmail($mailtext), cleanEmail($header));

Grüsse
Cosinus
Einen Kommentar schreiben:
-
Für URL-Escape-Sequenzen, aber ich verstehe nicht, was das bringen soll, da PHP die ja wieder auflöst (das Thema hatten wir schon). Der Code würde also doppelt URL-codierte Zeichen verbieten, macht das Sinn?Zitat von cosinus Beitrag anzeigenIch weiss jetzt allerdings nicht so genau wofür %09 %10 %11 usw, steht...
Einen Kommentar schreiben:
-
Wie sieht das hier aus...
Ich weiss jetzt allerdings nicht so genau wofür %09 %10 %11 usw, steht...PHP-Code:function cleanEmail($value)
{
$value = preg_replace("/(Content-Transfer-Encoding:|MIME-Version:|content-type:|"
."Subject:|to:|cc:|bcc:|from:|reply-to:)/ims", "", $value);
$value = preg_replace("/(%0A|\\\\r|%0D|\\\\n|%00|\\\\0|%09|\\\\t|%01|%02|%03|%04|%05|"
."%06|%07|%08|%09|%0B|%0C|%0E|%0F|%10|%11|%12|%13)/ims", "", $value);
return $value;
}
// aufruf mit:
mail(cleanEmail($mail), cleanEmail($betreff), cleanEmail($mailtext), cleanEmail($header));
Grüsse
Cosinus
Einen Kommentar schreiben:
-
Du willst den Benutzer des Formulars mit einer Rechenaufgabe nerven, damit du keinen Stress hast. Das ist nicht sehr "kundenfreundlich".Zitat von cosinus Beitrag anzeigenich verstehe nur nicht so ganz, was Dein Hinweis mit meinen Fragen nach einem Spamsicheren Formular zu tun hat...?
Nein, das Kind liegt im Brunnen, wenn du den Spam lesen musst. Denn dann kostet er dich Zeit. Der Spamfilter bei deinem Mailprovider arbeitet ohne dein Zutun. Der kostet dich also gar nichts. Deshalb ist es absolut okay, wenn jemand Potenzmittelwerbung mit deinem Kontaktformular abschickt. Der Spamfilter deines Mailproviders entsorgt den Mist.Wenn sich erst der Spamfilter des Zielpostfachs damit rumärgern muss, ist das Kind schon in den Brunnen gefallen...
Nochmal in aller Deutlichkeit:
Du sollst dein Formular vor Mail Injection (CC, BCC, etc.) schützen. Somit kann kein Spam irgendwo hingeschickt werden, sondern nur noch an deine Kontaktadresse.
Du kannst einen Flooding Schutz (max. x Submits pro IP und Zeitspanne) und/oder Badwordfilter implementieren.
Dadurch sinkt die Last auf dem Server und der Spamfilter deines Mailproviders hat auch weniger zu tun.
Du solltest nicht den User mit irgendwelchen Rechenaufgaben nerven!
Einen Kommentar schreiben:
-
Ähmm...Zitat von onemorenerd Beitrag anzeigenEin Kontaktformular ist eine sensible Stelle. Willst du deine Benutzer wirklich mit solchen Aufgaben nerven? Flooding-Schutz, Badword Filter und der Spamfilter des Zielpostfachs sollten doch ausreichen, um dich vor dem gröbsten Müll zu schützen.
Janu...
also...
Nich böse sein - aber...
ich verstehe nur nicht so ganz, was Dein Hinweis mit meinen Fragen nach einem Spamsicheren Formular zu tun hat...?
Ich will verhindern, dass irgendjemand Spams von meinem Formular versendet - klar soweit?
Wenn sich erst der Spamfilter des Zielpostfachs damit rumärgern muss, ist das Kind schon in den Brunnen gefallen...
...und ich hab ne Menge Ärger
Grüsse Cosinus
Einen Kommentar schreiben:
-
Nee offenbar ist es nicht klar. Aber es sind ja deine User …Zitat von cosinus Beitrag anzeigenSchon klar...
Einen Kommentar schreiben:
-
Nicht nach, sondern ab (also inklusive).Zitat von cosinus Beitrag anzeigenDas Schneidet alles nach dem ersten Umbruch ab?
Ja, warum nicht?Zitat von cosinus Beitrag anzeigenKann ich das auch für die eMail-Adresse einsetzen, falls ich
diese in den Header übernehmen will?
Solange du nicht mit Anhängen oder Alternativformaten (also multipart-Mails aller Art) arbeitest, ist der Message-Body nicht infiltrierbar. Bei multipart-Mails theoretisch ja, aber das kannst du verhindern, indem du vernünftige Boundaries generierst und nicht solche Sinnlosboundaries wieZitat von cosinus Beitrag anzeigenGibt es auch noch irgendwelche fiesen Tricks auf die ich
im eMail-Text achten muss?
weil die leicht zu erraten sind und damit Anhänge (z. B. Viren) eingeschleust werden könnten.Code:====NextPart====
Einen Kommentar schreiben:
-
AaaahaZitat von AmicaNoctis Beitrag anzeigenPHP-Code:preg_replace("<[\\r\\n].*$>s", "", $betreff)

Das Schneidet alles nach dem ersten Umbruch ab?
Kann ich das auch für die eMail-Adresse einsetzen, falls ich
diese in den Header übernehmen will?
Gibt es auch noch irgendwelche fiesen Tricks auf die ich
im eMail-Text achten muss?
Grüsse
Cosinus
Einen Kommentar schreiben:
-
PHP-Code:preg_replace("<[\\r\\n].*$>s", "", $betreff)
Einen Kommentar schreiben:
-
Zitat von AmicaNoctis Beitrag anzeigenNein, weil PHP die selbst URL-decodiert und die dann als die Zeichen ankommen die es sind: Leerzeichen, Umbrüche, ...
Nicht zulassen, also z. B. mit preg_replace alles ab einem Umbruch abschneiden.
Hallo,
Also die Umrüche werde ich - glaube ich - so los,
aber wie schneide ich alles nach dem ersten Umbruch ab??
GrüssePHP-Code:$betreff = preg_replace("/(\n|\r|\r\n)/", "", $betreff);
Cosinus
Einen Kommentar schreiben:
-
Schon klar...Zitat von onemorenerd Beitrag anzeigenEin Kontaktformular ist eine sensible Stelle. Willst du deine Benutzer wirklich mit solchen Aufgaben nerven? Flooding-Schutz, Badword Filter und der Spamfilter des Zielpostfachs sollten doch ausreichen, um dich vor dem gröbsten Müll zu schützen.
Mir ist das ziemlich egal was bei mir eintrifft.
Meine eMail-Adresse ist schon ca. 15 Jahre alt und ich erhalte täglich einige hundert Spams.
Ich möchte nur verhindern, dass über mein Formular tausende Spams versendet werden.
Grüsse
Cosinus
Einen Kommentar schreiben:
-
Nein, weil PHP die selbst URL-decodiert und die dann als die Zeichen ankommen die es sind: Leerzeichen, Umbrüche, ...Zitat von cosinus Beitrag anzeigenMüssten dazu nicht Zeichen wie %:@ im Betreff erlaubt sein
Nicht zulassen, also z. B. mit preg_replace alles ab einem Umbruch abschneiden.Zitat von cosinus Beitrag anzeigenUnd wie filtere ich nun diese Umbrüche aus?
Einen Kommentar schreiben:
-
Müssten dazu nicht Zeichen wie %:@ im Betreff erlaubt sein?Zitat von AmicaNoctis Beitrag anzeigenAber was ist mit diesem Betreff (URL-encoded)?:Der wird zuCode:Mahnung%0d%0aTo:%20spamrecipient@example.com%0d%0a From:%20Anwalt%20%3cspoofedsender@example.com%3e%0d%0a
Code:From: user@example.com To: info@example.org Subject: Mahnung To: spamrecipient@example.com From: Anwalt <spoofedsender@example.com> MIME-Version: 1.0 ...
Und wie filtere ich nun diese Umbrüche aus?
Die Zeichenfolgen %0d %0a etc. aus dem Text rauslöschen?
Hilf mir mal auf die Sprünge ;-)
Grüsse
Cosinus
Einen Kommentar schreiben:
-
Ein Kontaktformular ist eine sensible Stelle. Willst du deine Benutzer wirklich mit solchen Aufgaben nerven? Flooding-Schutz, Badword Filter und der Spamfilter des Zielpostfachs sollten doch ausreichen, um dich vor dem gröbsten Müll zu schützen.
Einen Kommentar schreiben:
Einen Kommentar schreiben: