Mail-Formular-Problem

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

  • Mail-Formular-Problem

    Hallo,
    leider habe ich mich schon lange nicht mehr mit PHP beschäftigt. Aus
    diesem Grund bin ich auch sehr aus der Materie heraus und ich hoffe
    jemand vom Board kann mir helfen mein Script auf den neuesten
    Stand zu bringen und anzupassen.
    Bisher lief es immer einwandfrei, doch bei einem anderen Provider
    funktionierte es nicht, wenn man dem Formular keine Mail-Adresse
    mitgegeben hat. Dort hat es dann einen 404-Fehler gegeben.
    Wenn ich hier ein anderes Posting und die Antwort des Providers richtig
    interpretiere hat es mit der E-Mailinjection zu tun.

    Antwort Provider:
    In der Datei /.htaccess legen Sie eine Fehlerseite für den
    HTTP-Errorcode 500 fest auf
    http://www.testurl.de/500.html -
    diese Datei existiert jedoch nicht und bringt folglich 404.
    (Desweiteren beachten Sie bitte, dass die für 401
    hier festgelegte URL so nicht gültig ist - vgl. Link )


    Der Statuscode 500 wird generiert,
    wenn die "From:" Angabe innerhalb der E-Mail keinen gültigen Wert
    (eine E-Mailadresse)
    enthält und deshalb das E-Mailsubsystem die so übergebene E-Mail ablehnt.
    Dieser Check ist Teil eines von uns entwickelten Mechanismuses,
    um unsere Kunden vor den Auswirkungen und Folgen
    von E-Mailinjection-Angriffen
    (vgl. Link )
    zu schützen, gegen welches Ihr Script auch anfällig ist.
    Sorgen Sie im ersten Schritt dafür dass sämtliche steuernden
    E-Mail-Headerfelder (To, From, Reply-To etc.) korrekt beschickt werden.
    Verwenden Sie beispielsweise als Absender,
    wenn der Besucher keine E-Mailadresse angibt,
    eine eigene wie z.B. no-reply@.....
    In einem weiteren Schritt sollten sie
    Plausibilitäts-Prüfungen aller im E-Mail-Header verwendeten Variblen
    (name, vorname etc.) implementieren,
    um somit Einfalltore für E-Mailinjection-Angriffe zu schließen.
    Anbei findet ihr mein PHP-Script für die Mailabfrage.
    Ich hoffe jemand von euch kann mir weiter helfen...

    Mein Quelltext:
    PHP-Code:
    <?
    // Angaben anpassen
    $to_email='mail@testurl.de'; //Die Zieladresse
    $mail_success='./versendet.html'; // Pfad zu einer Bestätigungsseite, 
    wenn die Mail erfolgreich versendet wurde.


    $error=false;

    // Hier werden alle Pflichtfelder festgelegt. 
    Diese Felder dürfen nicht leer bleiben.
    $pflicht[]='name';
    $pflicht[]='telefon';
    $pflicht[]='nachricht';

    $absendezeit = date('h-i-s, j-m-y');

    if($_POST)
    {
        // prüfen, ob eines der Pflichtfelder leer ist
        foreach($pflicht AS $key => $result)
        {
            if(!$_POST[$result])
            {
                ${$pflicht[$key].'_error'}='Bitte ausfüllen';
                $error=true;
            }
        }

        // Prüfung der PLZ
        $pattern_plz="/^[0-9]{5}$/";
        if(!preg_match($pattern_plz,$_POST['plz']) && $_POST['plz']!='')
        {
            $plz_error='falsches Plz Format';
            $error=true;
        }

        // Prüfung der Telefonnummer
        $pattern_tel="/^[0-9-()\/+.]*$/";
        if(!preg_match($pattern_tel,$_POST['telefon']) && $_POST
    ['telefon']!='')
        {
            $telefon_error='falsches Format';
            $error=true;
        }

             // Prüfung der Faxnummer
        $pattern_fax="/^[0-9-()\/+.]*$/";
        if(!preg_match($pattern_fax,$_POST['telefax']) && $_POST
    ['telefax']!='')
        {
            $telefax_error='&nbsp;&nbsp;&nbsp;&nbsp;falsches 
    Format';
            $error=true;
        }

             // Prüfung der E-Mail
        if($_POST['email']!='')
        {
            function checkmail($email)
            {
                if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]
    ([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $email, $check))
                {
                    if(getmxrr(substr(strstr($check
    [0], '@'), 1), $validate_email_temp))
                    {
                        return true;
                    }
                    if(checkdnsrr(substr(strstr($check
    [0], '@'), 1),"ANY"))
                    {
                        return true;
                    }
                }
                return false;
            }

            if(!checkmail($_POST['email']))
            {
                $email_error='&nbsp;&nbsp;&nbsp;&nbsp;falsches Format';
                $error=true;
            }
        }

        // Wenn keine Fehler vorhanden, dann kann die Mail versendet 
    werden
        if(!$error)
        {


            $from_name="{$_POST['vorname']} {$_POST
    ['name']}";
            $from_email=$_POST['email'];

            $headers  = "X-Sender: $from_name<$from_email>\n";
            $headers .= "X-Mailer: $from_name powered by 
    SPMan\n";
            $headers .= "Return-Path: <$from_email>\n";
            $headers .= "Date: ". date('r'). "\n";
            $headers .= "From: $from_email \n";
            $headers .= "Sender: $from_email\n";
            $headers .= "Reply-To: $from_email\n";
            $headers .= "Organization:  testurl.de\n";
            $headers .= "X-MSMail-Priority: Normal\n";
            $headers .= "Content-Type: text/plain\n";

            $comment = $from_name.' aus '.$_POST
    ['plz'].' '.$_POST['ort'].' hat folgende Anfrage gesendet:'."\n\n";
                     $comment .= "Absendezeit: ".$absendezeit. "\n\n";
                     $comment .= "Anrede: ";
                     $comment .= $_POST['anrede']."\n";
                     $comment .= "Vorname: ";
                     $comment .= $_POST['vorname']."\n";
                     $comment .= "Name: ";
                     $comment .= $_POST['name']."\n";
                     $comment .= "Straße: ";
                     $comment .= $_POST['straße']."\n";
                     $comment .= "Plz: ";
                     $comment .= $_POST['plz']." ";
                     $comment .= "Ort: ";
                     $comment .= $_POST['ort']."\n";
                     $comment .= "Telefon: ";
                     $comment .= $_POST['telefon']."\n";
                     $comment .= "Telefax: ";
                     $comment .= $_POST['telefax']."\n";
                     $comment .= "E-Mail: ";
                     $comment .= $_POST['email']."\n";
                     $comment .= "Betreff: ";
                     $comment .= $_POST['betreff']."\n\n";
                     $comment .= "Nachricht:\n";
                     $comment .= $_POST['nachricht'];



            // Inhalte für den Besucher

                     $comment2 = "Herzlichen Dank für Ihr Interesse an 
    TestURL.\n\nDie nachfolgende Nachricht wurde erfolgreich an uns 
    zugestellt.\n\nIhre Nachricht:\n";
            $comment2 .= $_POST['nachricht']."\n\n";
                     $comment2 .= "Wir werden uns schnellstmöglich mit Ihnen in 
    Verbindung setzen.\n";
                     $comment2 .= "Ihr TestURL Team\n\n";
                     
    $comment2 .= "==========================================
    =============\n\n";
                     $comment2 .= "Manfred Mustermann\n";
                     $comment2 .= "Muetserstr. 1\n";
                     $comment2 .= "00815 Musterhausen\n\n";
                     $comment2 .= "Telefon: xxxx - xxxxxx\n";
                     $comment2 .= "Telefax: xxxx - xxxxxx\n";
                     $comment2 .= "Mobil:   xxxx - xxxxxx\n";
                     $comment2 .= "E-Mail:  mail@testurl.de\n";
                     $comment2 .= "Internet: www.testurl.de";

            if(mail($to_email,$_POST
    ['betreff'],$comment,$headers))
            {

                @mail($from_email,$_POST
    ['betreff'],$comment2,$headers);
                header("LOCATION: $mail_success");
            }
        }

    }
    ?>
    Zuletzt geändert von SPMan; 28.04.2006, 12:56.

  • #2
    Re: Mail-Formular-Problem

    Als erstes lies bitte die Regeln, und breche deinen Code um!
    Original geschrieben von SPMan
    Anbei findet ihr mein PHP-Script für die Mailabfrage.
    Ich hoffe jemand von euch kann mir weiter helfen...
    Ach ja, die "macht ihr mal"-Fraktion schon wieder ...


    Dein Provider hat dir einen Link gegeben, der gute Informationen zum Thema Email-Injection, und wie man sie vermeiden kann, liefert.

    Also, mach du mal ...!
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Brich bitte zunächst dein Posting gemäß unseren Regeln um.

      Kommentar


      • #4
        Original geschrieben von TobiaZ
        Brich bitte zunächst dein Posting gemäß unseren Regeln um.
        Hallo TobiaZ,
        Entschuldigt bitte das "unumgebrochene" Posting. Normalerweise hat dies immer automatisch funktioniert. Im Editor war es von Anfang an umgebrochen. Wie kann ich denn einen Zeilenumbruch erzwingen? Gibt es im vB Code eine Entsprechung für <br/>? Denn im Editor ist es leider nicht zu erkennen ob der Text umgebrochen ist oder nicht.
        Ich bin zwar schon etwas weiter gekommen den Text umzubrechen, aber ich erkenne keine Gesetzmäßgkeit. Und somit gestaltet sich das Ganze als Sisiphus-Arbeit. Ich bitte meine Unwissenheit zu entschuldigen.

        SPMan

        Kommentar


        • #5
          Original geschrieben von SPMan
          Wie kann ich denn einen Zeilenumbruch erzwingen?
          Mit einer von den phantastischen Tasten, auf denen [Enter], [Return] o.ä. steht ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            Mit einer von den phantastischen Tasten, auf denen [Enter], [Return] o.ä. steht ...
            Danke für die Info. Auch die Idee bin ich auch gekommen. Nur leider
            schein sie scheinbar nicht (immer) zu funktionieren. Ansonsten
            hätte ich ja auch nicht gefragt.

            Nun scheint es ja endlich geklappt zu haben. Entschuldigt bitte nochmals
            die Unannehmlichkeiten die ich verursacht habe.

            Ich möchte auch erwähnen, dass ich nicht zur "mach Du mal" Fraktion
            gehöre. Ich hätte nicht gefragt, wenn ich nicht wirklich Hilfe bräuchte.
            Zuletzt geändert von SPMan; 28.04.2006, 13:44.

            Kommentar

            Lädt...
            X