Schutz vor Spamversand - geht,s auch einfacher?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AmicaNoctis
    antwortet
    Zitat von cosinus Beitrag anzeigen
    Ich will nur ganz sicher gehen
    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.

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Ich gebe zu, die letzte zeile habe ich gegoogelt...

    Was hältst Du hiervon?

    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("/(<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r).*/ims""",  $value);

       return 
    $value


    // aufruf mit: 
    mail(cleanEmail($mail), cleanEmail($betreff), cleanEmail($mailtext), cleanEmail($header)); 
    Ich will nur ganz sicher gehen

    Grüsse
    Cosinus

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Zitat von cosinus Beitrag anzeigen
    Ich weiss jetzt allerdings nicht so genau wofür %09 %10 %11 usw, steht...
    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?

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Wie sieht das hier aus...

    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)); 
    Ich weiss jetzt allerdings nicht so genau wofür %09 %10 %11 usw, steht...

    Grüsse
    Cosinus

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Zitat von cosinus Beitrag anzeigen
    ich verstehe nur nicht so ganz, was Dein Hinweis mit meinen Fragen nach einem Spamsicheren Formular zu tun hat...?
    Du willst den Benutzer des Formulars mit einer Rechenaufgabe nerven, damit du keinen Stress hast. Das ist nicht sehr "kundenfreundlich".

    Wenn sich erst der Spamfilter des Zielpostfachs damit rumärgern muss, ist das Kind schon in den Brunnen gefallen...
    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.

    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:


  • cosinus
    antwortet
    Zitat von onemorenerd Beitrag anzeigen
    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.
    Ähmm...

    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:


  • onemorenerd
    antwortet
    Zitat von cosinus Beitrag anzeigen
    Schon klar...
    Nee offenbar ist es nicht klar. Aber es sind ja deine User …

    Einen Kommentar schreiben:


  • AmicaNoctis
    antwortet
    Zitat von cosinus Beitrag anzeigen
    Das Schneidet alles nach dem ersten Umbruch ab?
    Nicht nach, sondern ab (also inklusive).

    Zitat von cosinus Beitrag anzeigen
    Kann ich das auch für die eMail-Adresse einsetzen, falls ich
    diese in den Header übernehmen will?
    Ja, warum nicht?

    Zitat von cosinus Beitrag anzeigen
    Gibt es auch noch irgendwelche fiesen Tricks auf die ich
    im eMail-Text achten muss?
    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 wie

    Code:
    ====NextPart====
    weil die leicht zu erraten sind und damit Anhänge (z. B. Viren) eingeschleust werden könnten.

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Zitat von AmicaNoctis Beitrag anzeigen
    PHP-Code:
    preg_replace("<[\\r\\n].*$>s"""$betreff
    Aaaaha

    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:


  • AmicaNoctis
    antwortet
    PHP-Code:
    preg_replace("<[\\r\\n].*$>s"""$betreff

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Zitat von AmicaNoctis Beitrag anzeigen
    Nein, 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??

    PHP-Code:
    $betreff preg_replace("/(\n|\r|\r\n)/"""$betreff); 
    Grüsse
    Cosinus

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Zitat von onemorenerd Beitrag anzeigen
    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.
    Schon klar...
    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:


  • AmicaNoctis
    antwortet
    Zitat von cosinus Beitrag anzeigen
    Müssten dazu nicht Zeichen wie %:@ im Betreff erlaubt sein
    Nein, weil PHP die selbst URL-decodiert und die dann als die Zeichen ankommen die es sind: Leerzeichen, Umbrüche, ...

    Zitat von cosinus Beitrag anzeigen
    Und wie filtere ich nun diese Umbrüche aus?
    Nicht zulassen, also z. B. mit preg_replace alles ab einem Umbruch abschneiden.

    Einen Kommentar schreiben:


  • cosinus
    antwortet
    Zitat von AmicaNoctis Beitrag anzeigen
    Aber was ist mit diesem Betreff (URL-encoded)?:
    Code:
    Mahnung%0d%0aTo:%20spamrecipient@example.com%0d%0a
    From:%20Anwalt%20%3cspoofedsender@example.com%3e%0d%0a
    Der wird zu

    Code:
    From: user@example.com
    To: info@example.org
    Subject: Mahnung
    To: spamrecipient@example.com
    From: Anwalt <spoofedsender@example.com>
    MIME-Version: 1.0
    ...
    Müssten dazu nicht Zeichen wie %:@ im Betreff erlaubt sein?

    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
    Zuletzt geändert von AmicaNoctis; 04.05.2010, 00:30. Grund: Umbruch im Zitat eingefügt

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    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:

Lädt...
X