Norbert: Email aus Formular - Sicherheit

Ich würde gerne ein ausgefülltes  Formular, per MAIL an mich weitersenden.

Ichhabe folgende Felder
Name
Mail
Text

wenn alles eingegeben wurde, behandel ich alle Eingaben.

$mail = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $Mail );
...
...

anschliessend sende ich sie weiter.

Kann ich noch irgendwas verbessern, so das kein Schindluder mit meinem Formular gemacht wird.

Norbert

  1. wenn alles eingegeben wurde, behandel ich alle Eingaben.

    $mail = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $Mail );

    was soll das bringen - im Mail ?

    Kann ich noch irgendwas verbessern, so das kein Schindluder mit meinem Formular gemacht wird.

    Welche Schindluder?

    1. In einem Formular wird eine Email eingegeben als Absender, und auch sonst was in die einzelnen Felder, diese behandele ich mit eben "preg_replace"

      preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $VARIABLE );

      so das ich eben bestimmte Wortteile entferne, so das das Formular nicht anderweitig missbraucht wird.

      1. In einem Formular wird eine Email eingegeben als Absender, und auch sonst was in die einzelnen Felder, diese behandele ich mit eben "preg_replace"

        preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $VARIABLE );

        Ja, ich kann lesen.

        so das ich eben bestimmte Wortteile entferne, so das das Formular nicht anderweitig missbraucht wird.

        Wofür?

        Warum glaubst du, du könntest das Missbrauchspotentiall verringern, wenn du genau diese Zeichenketten kommentarlos entfernst?

  2. Tach!

    Kann ich noch irgendwas verbessern, so das kein Schindluder mit meinem Formular gemacht wird.

    Siehe Kontextwechsel - E-Mail.

    dedlfix.

  3. Hello,

    Ich würde gerne ein ausgefülltes  Formular, per MAIL an mich weitersenden.

    Ichhabe folgende Felder
    Name
    Mail
    Text

    wenn alles eingegeben wurde, behandel ich alle Eingaben.

    $mail = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $Mail );

    Das ist mMn unnötig, wenn die Eingaben nicht tatsächlich in den Mailheadern landen.
    Solange die Eingaben im Mailbody landen, sollten Angaben, wie 'bcc:' usw. unschäflich sein.

    Allerdings müssen Header und Mailbody bezüglich Content- und Transferencoding passend behandelt werden, wenn die Mail nicht beim Empfänger ungewöhnliche Zeichen erzeugen oder unterwegs einen Mailserver durcheinanderbringen soll.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. Hallo,

    $mail = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $Mail );

    wie meine Vorredner schon bemerkten, ist es vom Sicherheitsaspekt her egal, was im Mail-Text so alles vorkommt. Wünschenswert wäre nur, dass die Codierung korrekt ist und mit den entsprechenden Angaben aus dem Header zusammenpasst.

    Kann ich noch irgendwas verbessern, so das kein Schindluder mit meinem Formular gemacht wird.

    Eigentlich genügt es, wenn du nur die Nutzereingaben kontrollierst, die in Headerzeilen landen - typischerweise sind das "Subject:", "To:", und eventuell "From:". Stelle sicher, dass sie keine Steuerzeichen, vor allem keine Zeilenumbrüche enthalten, dann kann eigentlich nichts mehr passieren. Schlimmstenfalls ist dann eine Headerinformation unbrauchbar, aber gleichzeitig auch unschädlich.

    Ciao,
     Martin

    --
    Wenn alle das täten, wass sie mich können,
    käme ich gar nicht mehr zum Sitzen.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Tach!

      Eigentlich genügt es, wenn du nur die Nutzereingaben kontrollierst, die in Headerzeilen landen - typischerweise sind das "Subject:", "To:", und eventuell "From:".

      Subject und To sind seitens PHP abgesichert (Steuerzeichen zu Leerzeichen), wenn man nicht eine hornalte 4er Version nimmt ("aktuelle" 4er Versionen sind auch sicher). From und der Rest, der im Parameter $additional_headers übergeben wird, ist noch als kritische Stelle übriggeblieben. Nichtsdestotrotz kann man natürlich Subject und To auf Zeilenumbrüche untersuchen und bei einem Vorkommen die Bearbeitung abbrechen, weil das recht sicher ein Zeichen für einen Spam-Versuch ist.

      dedlfix.

      1. Hallo,

        Eigentlich genügt es, wenn du nur die Nutzereingaben kontrollierst, die in Headerzeilen landen - typischerweise sind das "Subject:", "To:", und eventuell "From:".
        Subject und To sind seitens PHP abgesichert (Steuerzeichen zu Leerzeichen), wenn man nicht eine hornalte 4er Version nimmt

        stimmt, hätte ich wissen müssen. Ich erinnere mich an entsprechende Diskussionen, an denen ich auch schon beteiligt war.

        "aktuelle" 4er Versionen

        Ist das nicht ein Paradoxon? ;-)
        Mein Webhoster nervt mich in letzter Zeit schon fast mit der wiederholten Ankündigung, dass PHP4 demnächst endgültig als Wahlmöglichkeit verschwinden wird. Is' ja gut, mach endlich ...

        From und der Rest, der im Parameter $additional_headers übergeben wird, ist noch als kritische Stelle übriggeblieben. Nichtsdestotrotz kann man natürlich Subject und To auf Zeilenumbrüche untersuchen und bei einem Vorkommen die Bearbeitung abbrechen, weil das recht sicher ein Zeichen für einen Spam-Versuch ist.

        Ja, der Hinweis ist nicht neu, aber berechtigt.

        Ciao,
         Martin

        --
        Wer im Glashaus sitzt, sollte sich nur im Dunkeln ausziehen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(