Email Injection

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

  • Email Injection

    Hey Folks!

    Bin neu hier und nutze PHP wirklich sehr selten, daher sind meine Kenntnisse echt nur grundlegend.
    Bisher habe ich noch alles irgendwie zum laufen gebracht,
    aber jetzt beschwert sich mein webhoster, dass ein kontaktformular per email-injection für spam missbraucht wird.

    Hier mein Code nachdem ich ihn jetzt angepasst habe, allerdings scheint er immernoch nicht sicher zu sein.

    Könnt Ihr mir weiterhelfen und mir einen guten Tipp geben wie ich den Missbrauch verhindern kann?

    Vielen Dank!

    PHP-Code:
    ## Post-variablen aus dem Formular werden geholt...

    if($form=="1"){ ## Check ob das Formular abgeschickt wurde und man 
    nicht irgendwie anders auf die "send" Seite gelangt ist.
                    
    if(
    eregi("\r",$email) || eregi("\n",$email) || eregi("\r",$name) ||
     
    eregi("\n",$name) || eregi("\r",$telefon) || eregi("\n",$telefon) ||
     
    eregi("\r",$text) || eregi("\n",$text)){ 
    ## Neu hinzugefügte Schleife, habe allerdings nicht das gefühl dass sie was bringt..

    echo "<center><font face=Verdana size=2 color=#000000>
    Das Formular wurde <strong>nicht</strong> abgeschickt."
    ;

    die(
    "DIE!");
    }else{ 

    if(
    $name!="" && $email!="" && $telefon!="" && $text!=""){
                    
    $message "Als Name wurde angegeben: \"".$name."\"\n
    Als Email: \""
    .$email."\"\nTelefonnummer: \"".$telefon."\"\n\nAnfrage:\n".$text;
    $to "email@blabla.bla";
    $subject "Kontaktformular auf [url]www.blabla.bla[/url]";
    $headers "From: ".$email."\nReply-To: ".$email."\n";
    mail($to,$subject,$message,$headers);

    echo 
    "<center><font face=Verdana size=2 color=#000000>
    Das Formular wurde abgeschickt."
    ;
    }else{
    ## ... hier kommen dann die else schleifen mit den benachrichtigungen.. 
    (nicht vollständig ausgefüllt.. ) etc pp.. 
    [edit: code so besser?]
    Zuletzt geändert von mch2k; 14.02.2006, 21:57.

  • #2
    lesen: http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Könnte es sein dass in $email und somit in $headers noch mehr Sachen stehen als du denkst, z.B. BCC oder CC?


      P.S.: Der Code ist okay so, danke
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Habe nun zusätzlich noch folgendes eingefügt/abgeändert:

        PHP-Code:
        $from preg_replace('/([^a-zA-Z0-9@\-._]+)/'''$email);
        mail($to,$subject,$message,'From: '.$from); 
        Jetzt müsste doch definitiv über das Formular kein SPAM mehr an verschickt werden können.

        Fragt sich nur noch, ob irgendwelche Bots trotzdem tausende mails über das formular verschicken, somit die mailbox und den server überlasten und das dann der grund ist dass der webhoster sich bei mir beschwert...

        aber wie kann ich das verhindern? oder ist dieses bedenken überflüssig?

        gruss martin

        Kommentar


        • #5
          Original geschrieben von Shurakai
          Könnte es sein dass in $email und somit in $headers noch mehr Sachen stehen als du denkst, z.B. BCC oder CC?


          P.S.: Der Code ist okay so, danke
          ähm, hallo? nicht ok
          lieber ma register globals vermeiden. des weiteren ne cookie oder ip sperre ...

          Kommentar


          • #6
            register globals ist aus. die variablen werden am anfang des skripts geholt.
            nach dem schema: $bla = $HTTP_GET_VARS["bla"];


            cookie oder ip sperre ...
            auf sowas spiele ich mit meinem letzten beitrag an,

            ist sowas nötig um zu verhindern dass ein bot tausende von mails über das formular schicken kann? -> diese landen ja nur im postfach der webseiten betreiber, also nur bei einer person

            Kommentar

            Lädt...
            X