PHP-Entwicklung

PHP-Entwicklung

This thread has been closed so unfortunately you can't post here any more.

Posts 11-20 of 41
  • Post visible to registered members
  • Post visible to registered members
  • Post visible to registered members
  • Murat Purc
    Murat Purc    Premium Member
    The company name is only visible to registered members.
    Hallo,

    bist du dir sicher, dass die Spammails auch wirklich über das Formular verschickt werden?

    Die Logik zum Bereinigen der Eingaben scheint auf Anhieb ok zu sein.

    [nachtrag]
    Ok, das muss ich dann wohl zurücknehmen, scheint doch nicht ganz in Ordnung zu sein.

    Verwende doch einfach PHPMailer, der sollte mit eventuellen Schwachstellen zurechtkommen. Das bedeuet aber nicht, dass du auf deine Validierung ganz verzichten solltest.
    http://phpmailer.codeworxtech.com/
    [/nachtrag]

    Ich würde mal eine Zeit lang die Inhalte der Variablen, die an die mail() Funktion übergeben werden, protokollieren. Eventuell kannst du dann erkennen, welche Schwachstellen es noch gibt.

    Gruß
    Murat Purc
    This post was modified on 28 May 2008 at 02:36 pm.
  • Post visible to registered members
  • Daniel Hoover
    Daniel Hoover
    The company name is only visible to registered members.
    28 May 2008, 2:03 pm
    Re: Kontaktformular und Sicherheit
    Hallo Mirko,

    ich an deiner Stelle würde als kleines Hindernis eine Session verwenden. Soll heißen:

    Eine Klasse bauen (z.B. mailclass)

    ganz oben session_start()

    if($_POST)
    {
    if($mailclass->visited==true)
    {
    //die Methode send ruft dann mail() auf und zerstört die Session
    $mailclass->send();
    }
    }
    else
    {
    $mailclass->visited = true;
    //Funktion save speichert die Attribute des Objekts
    $mailclass->save();
    }

    Weitere ausbaustufe: Zufallsgenerierte Feldnamen
    Nächste Ausbaustufe IP Adressen in eine Tabelle schreiben mit einem Timestamp versehen und überprüfen ob in den letzten 10, 20, 30 (was auch immer) Minuten von dieser IP-Adresse eine Abfrage kam.

    Zur Frage warum es Spammer schaffen Kontaktformulare zu missbrauchen:

    Das Problem liegt wohl am <form action="url"> Tag. Ich kann statt <form method="post" action="submit.php"> auch <form method="post" action="http://www.domain.tld/submit.php"> angeben und innerhalb dieses Formtags Felder definieren wie ich lustig bin. Das überprüfen von <input type="hidden" name="fest" value="denkste"> bringt nichts dazu folgendes Beispiel:

    <form method="post" action="http://www.domain.tld/submit.php">
    <input type="text" name="fest" value="variabel">
    </form>

    Oberste Priotität ist somit folgendes: Ist es für einen "normalen" Kontaktformularbenutzer leicht möglich mit mir Kontakt aufzunehmen (ein CAPTCHA stellt unter Umständen schon en Hindernis dar)? Ist der Aufwand um Spammen zu können groß? -> Ja -> (der Spammer sucht sich ein anderes Formular) -> Nein (das Formular wird missbraucht)

    Mit freundlichen Grüßen,
    Daniel
  • Mirko Dass
    Mirko Dass    Group moderator
    The company name is only visible to registered members.
    Hallo zusammen

    Folgender Code kommt nach der Abfrage der Felder zum tragen:

    //wenn Pflichtfelder ok
    if($error == 0) {

    //Anfrage zusammenstellen
    $message .= "Anfrage von: \n\n";
    $message .= $name."\n";

    if($firma != "") {

    $message .= $firma."\n";
    }

    $message .= $telefon."\n";
    $message .= $email."\n\n";
    $message .= "Anfrage: \n\n";
    $message .= "----------------------------------------\n";
    $message .= $anfrage;

    MailVersand("info@codestorm.de","Anfrage von: {$name}",$message,$email);



    Die Funktion MailVersand() sieht wie folgt aus (diese wird per include von einer config Datei eingebunden):

    function MailVersand($mailto,$mailsubject,$mailbody,$mailfrom) {

    mail($mailto, $mailsubject, $mailbody,
    "From: ".$mailfrom."\r\n"
    ."Reply-To: ".$mailto."\r\n"
    ."Content-type: text/plain; charset=iso-8859-1\n"
    ."MIME-Version: 1.0\n"
    ."X-Mailer: PHP/" . phpversion());

    }

    @ Stefan
    Wie müssten denn die preg_replaces aussehen? Genau in dieser Art schwirren sie zahlreich durch Internetforen.

    Den Fehler den ich jetzt sehe, ist das ich die Empfängeradresse per Funktionsaufruf übergebe, statt sie direkt im Aufruf mail() zu deklarieren.

    Das ganze passiert mir auch das erste mal, Gott sei Dank bei meiner eigenen Seite. Eigentlich dachte ich immer das meine Maßnahmen ausreichten. Aber gut, daran wächst man nur :)

    Danke
    Mirko
  • Post visible to registered members
  • Murat Purc
    Murat Purc    Premium Member
    The company name is only visible to registered members.
    Hallo,

    danke für den Hinweis, den Inhalt im Beitrag habe ich angepasst. Die preg_replaces() hätte ich mir etwas genauer ansehen sollen.

    Gruß
    Murat
  • Post visible to registered members
 
Sign up for free: