Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Sicherheit in PHP-Formularen u. Reguläre Ausdrücke

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.03.2004
    Ort
    London
    Beiträge
    16

    Sicherheit in PHP-Formularen u. Reguläre Ausdrücke

    Hallo zusammen,

    seit einiger Zeit darf ich mich nun intensiver mit php beschäftigen. Für unsere Homepage habe ich ein Kontaktformular erstellt, das auch soweit ganz gut funktioniert.
    Ich würde jetzt nur gerne wissen, welche Sicherheitsvorkehrungen ich beachten sollte.
    Ich habe mir gedacht, dass ich mittels Regulären Ausdrücken nur bestimmte Zeichen im Namens-, Email- und Textfeld zulassen und somit verhindern könnte, dass irgendwelcher Code o.ä. über dieses Formular verschickt wird.
    Irgendwie funktioniert das bei meiner Lösung aber noch nicht. Ich kann z.B. trotzdem noch ein ! im Namensfeld eingeben und die Email wird verschickt.
    Wie mache ich es richtig?
    Und ist es zwingend notwendig bei einer kleinen Homepage ein Captcha einzubauen?

    Hier mal der Code:

    PHP-Code:
    <?php

         
    if(isset($_POST['Submit'])){



           
    //HTML- und PHP-Tags aus den Eingabefeldern entfernen

           
    $name=strip_tags($_POST['name']);

           
    $email=strip_tags($_POST['email']);

           
    $anfrage=strip_tags($_POST['anfrage']);

             

           if(!
    ereg("[a-zA-Z]+[a-zA-Z]",$name)){

           
    $error_msg="Bitte geben Sie Ihren Namen an.<br>";

           }

           if(!
    ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){

           
    $error_msg.="Bitte geben Sie eine gültige eMail-Adresse an.<br>";

           }

           if(
    strlen($anfrage)<3){

           
    $error_msg.="Bitte geben Sie an, welche Anfrage Sie an uns richten möchten.<br>";

           }

           if(isset(
    $error_msg)){

           
    //Eines der Felder wurde nicht korrekt ausgefüllt 

           
    echo "Ihre Anfrage konnte aus folgenden Gründen leider nicht bearbeitet werden:<br><br>";

           echo 
    $error_msg;

           echo 
    "<br>Bitte klicken Sie auf <a href=javascript:history.back(1)>zurück</a> und füllen Sie alle Felder aus.";

           }else{

           
    //Alle Felder ausgefüllt - eMail generieren

           
    $recipient="xxx@xxx.xx";

           
    $subject="Eine Anfrage aus dem Internet";

           
    $header="From: " $email "\r\n";

           
    $mail_body ="Das Anfrage-Formular wurde am " date("d.m.Y") . " um " date("H:i") . "h ausgeführt.\n";

           
    $mail_body.="Folgende Werte wurden eingetragen:\n\n";

           
    $mail_body.="Name: " $name "\n";

           
    $mail_body.="eMail: " $email "\n\n";

           
    $mail_body.="Anfrage:\n";

           
    $mail_body.=$anfrage "\n\n ---- Ende der automatisch generierten eMail ----";

         

           
    mail($recipient,$subject,$mail_body,$header);



           
    //Formular ausgeführt - Meldung ausgeben

           
    echo "Vielen Dank für Ihre Anfrage.<p>";

           }

         }else{

         
    //Formular noch nicht ausgeführt - Formular anzeigen

         
    ?>

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Du prüfst im Namen nicht - wie in der E-Mail-Adresse - ob $name vom Anfang bis zum Ende Deiner regex entspricht (es fehlen "^...$"). Damit genügt ein Name, der z. B. "jan!" lautet, der regex - es sind ja mindestens 2 Buchstaben enthalten. Du solltest die regex dann allerdings auch noch ein wenig erweitern, die Zeichen "-" und " " und (wenn jemand Wert auf seinen Titel legt) "." gehören mit in die Liste. Und was ist mit Umlauten?

    Jan

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    .museum geht bei Deiner email-Adresse nicht.
    Homepage: www.pingu.info

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.03.2004
    Ort
    London
    Beiträge
    16
    Vielen Dank, das hilft mir auf jeden Fall weiter!

    @Pingu: Ich glaube die Anzahl an E-Mail-Adressen mit dieser o.ä. Endung, die sich dann auch noch eine Anfrage an mich senden wollen, ist so gering, dass ich die gerne ausgrenze.

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    bau nochn captcha ein, wenn du nciht vollgespammt werden willst

  6. #6
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von Pingu Beitrag anzeigen
    .museum geht bei Deiner email-Adresse nicht.
    Zitat Zitat von doobienodoubt Beitrag anzeigen
    Ich glaube die Anzahl an E-Mail-Adressen mit dieser o.ä. Endung, die sich dann auch noch eine Anfrage an mich senden wollen, ist so gering, dass ich die gerne ausgrenze.
    Tolle Einstellung ...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •