Daniel: Formular mit mail()

Ahoi @ll,

hier war kürzlich eine Diskussion (finde sie gerade leider nicht) rund um formulare in denen mail() verwendet wird/werden könnte und welche als Spamverteiler funktionieren könnten, oder auch nicht bei korrekter prüfung. Da ich jetzt selbst ein Script erstellt habe welches anhand der vom Nutzer eingegebenen Daten eine email versendet würde mich jetzt interessieren wie ein effektiver schutz aussehen muss/sollte.

Das script dient zum senden von Dateien. Bis jetzt sieht es so aus:

  
function email_valid($email)  
{  
  if (!ereg("^.+@.+\\..+$", $email))  
  {  
    return false;  
  }  
  else  
  {  
    return true;  
  }  
}  
    $vorname = trim($_POST['vorname']);  
    $nachname = trim($_POST['nachname']);  
    $email = trim($_POST['email']);  
  
    if(email_valid($vorname))  
    {  
      $error = true;  
      $error_msg .= "- Keine Emailaddresse im Vornamen erlaubt<br>";  
    }  
    if(email_valid($nachname))  
    {  
      $error = true;  
      $error_msg .= "- Keine Emailaddresse im Nachnamen erlaubt<br>";  
    }  
        /* Empfänger */  
        $to  = $email;  
        /* Betreff */  
        $subject = "Ihre angeforderte Datei";  
        /* Nachricht */  
        $message = "";  
        /* header */  
        $headers  = "From: ich@localhorst.de\r\n";  
        $headers  .= "MIME-Version: 1.0\n";  
        $headers  .= "Content-Type: multipart/mixed; boundary=\"ZEND-12345\";\n";  
        $headers  .= "Content-Transfer-Encoding: 7bit\n";  
        $headers  .= "--ZEND-12345\n";  
        $headers  .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";  
        $headers  .= "Content-Transfer-Encoding: 7bit\n";  
        $headers  .= "Vielen dank fuer ihr interesse $vorname $nachname\n";  
        $headers  .= "--ZEND-12345\n";  
        $headers  .= "Content-type: $datei_mime_type; name=$dateiname_orig;\n";  
        $headers  .= "Content-Transfer-Encoding: base64\n";  
        $headers  .= "Content-Disposition: attachment\n";  
        $headers  .= "$date_string_base64\n";  
        $headers  .= "--ZEND-12345--";  
        /* Verschicken der Mail */  
        $gesendet = mail($to, $subject, $message, $headers);  
  

Ist die Prüfung so in Ordnung oder gibt es da irgendeine fehleranfälligkeit?

MfG

--
Alle Angaben wie immer ohne Gewähr
LEISE IST SCHEISSE!
  1. Ahoi Daniel,

    /* Empfänger */
            $to  = $email;

    ...  
      
    davor kommt natürlich eine überprüfung ob ein Fehleraufgetretten ist  
    oder nicht. in form von:  
    if(!$error)  
    $error wird ganz zu beginn mit $error=false; initiallisiert  
      
    MfG  
    
    -- 
    Alle Angaben wie immer ohne Gewähr  
      
    LEISE IST SCHEISSE!
    
  2. Ahoi @ll,

    hmm.. intressiert das niemanden? hat keiner Ahnung davon? wird der thread übersehen?

    MfG

    --
    Alle Angaben wie immer ohne Gewähr
    LEISE IST SCHEISSE!
  3. Hi Daniel,

    hier war kürzlich eine Diskussion (finde sie gerade leider nicht) rund um formulare in denen mail() verwendet wird/werden könnte und welche als Spamverteiler funktionieren könnten, oder auch nicht bei korrekter prüfung.

    Ja, anscheinend hatte ich auch heute wieder solch einen Angriff:

    Die Mails wurden aber nicht versendet, also scheinen die eingebauten Sicherungen zu wirken.

    Da ich jetzt selbst ein Script erstellt habe welches anhand der vom Nutzer eingegebenen Daten eine email versendet würde mich jetzt interessieren wie ein effektiver schutz aussehen muss/sollte.

    if (!ereg("^.+@.+\..+$", $email))

    Ich frage noch ab, ob meine eigene Adresse in einem Feld enthalten ist, denn das war ja bei den Spammails der Fall.

    Weiterhin binde ich auf der Seite, die betroffen war, eine Grafik mit Buchstaben und Ziffern ein, die manuell in ein Feld eingetippt werden müssen.

    Viele Grüße

    Jörg

    1. Ahoi Jörg Lorenz,

      Weiterhin binde ich auf der Seite, die betroffen war, eine Grafik mit Buchstaben und Ziffern ein, die manuell in ein Feld eingetippt werden müssen.

      Diese "technik" habe ich auch schon auf vielen anderen Seiten gesehen
      und frage mich wie das gelöst wurde. wieso ist da nicht immer das
      gleiche bild? woher weis das script welche Zahlen eingegeben werden
      müssen? ich hab schon 3 Ideen wobei bei nur einer davon nicht immer das
      gleiche bild kommen würde.

      MfG

      --
      Alle Angaben wie immer ohne Gewähr
      LEISE IST SCHEISSE!
      1. Hi Daniel,

        Diese "technik" habe ich auch schon auf vielen anderen Seiten gesehen
        und frage mich wie das gelöst wurde. wieso ist da nicht immer das
        gleiche bild? woher weis das script welche Zahlen eingegeben werden
        müssen? ich hab schon 3 Ideen wobei bei nur einer davon nicht immer das
        gleiche bild kommen würde.

        Hm, anhand des Dateinamens, der auf einem bestimmten Prinzip basiert?
        Eine andere Lösung würde mnich auch interessieren.

        Viele Grüße

        Jörg

        1. Ahoi Jörg Lorenz,

          Hm, anhand des Dateinamens, der auf einem bestimmten Prinzip basiert?
          Eine andere Lösung würde mnich auch interessieren.

          Im Prinzip braucht man 2 Daten:

          • den Dateinamen
          • den Code
            wenn der dateiname jetzt einfach 1234.jpg ist und darin die Zahlen 1234 stehen ist das ganze recht einfach zu entschlüsseln, bei 4321 wirds etwas kompliziert, außerdem muss sich das script ja, z.B. in einem hidden merken welche datei es ist, da kommt dann evt. eine dritte Variable hinzu und zwar die ID der Datei. Zufallsmässig eine herausfinden ist, nach kurzer überlegung doch nicht so schwer. hier meine 3 Lösungen:
          1. alle Bilder sind in einem seperaten Ordner, werden eingelesen , in
            einem array gespeichert und ein zuffäliges Element wird gewählt. hier
            muss der Code am Dateinamen ersichtlich sein.
          2. alle Bilder sind im gleichen (nicht zwingend seperaten) Ordner, zu
            beginn des Scripts wird ein Array erstellt welches jeweils Dateinamen
            und Code enthält.
          3. Die Bilder werden in einer DB gespeichert, ob nur der Dateiname oder das Bild selbst dürfte egal sein, das ganze hat eine ID und einen komplett vom Dateinamen losgelösten Code.

          Ich tendiere zu lösung 3.

          MfG

          --
          Alle Angaben wie immer ohne Gewähr
          LEISE IST SCHEISSE!
          1. Hi Daniel,

            1. Die Bilder werden in einer DB gespeichert, ob nur der Dateiname oder das Bild selbst dürfte egal sein, das ganze hat eine ID und einen komplett vom Dateinamen losgelösten Code.

            Ich tendiere zu lösung 3.

            Ja, das hört sich gut an, da müßte man mal darüber nachdenken.

            Viele Grüße

            Jörg

          2. echo $begrüßung;

            1. Der Code wird per Zufall erzeugt und in einer Sessionvariablen gespeichert. Die Session-ID wird wie üblich per Cookie oder als GET-Parameter bei jedem Clientrequest übergeben. Ein <img>-Tag verweist auf ein Script, dass den in der Sessionvariablen abgelegten Code zu einem (mehr oder weniger schlecht erkennbaren) Bild verarbeitet und ausliefert. Die Formulareingaben werden von einem Script ausgewertet, das den in der Sessionvariablen enthaltenen Code mit der Eingabe vergleicht.
              Keine Datenbank, keine Bilddateien, noch nicht mal temporäre werden dazu benötigt.

            echo "$verabschiedung $name";

            1. Ahoi dedlfix,

              Keine Datenbank, keine Bilddateien, noch nicht mal temporäre werden dazu benötigt.

              und wie soll ich dieses bild mit dem code erzeugen? ein echo
              $_SESSSION['zufaelliger code'] geht ja nicht, oder doch?

              MfG

              --
              Alle Angaben wie immer ohne Gewähr
              LEISE IST SCHEISSE!
              1. echo $begrüßung;

                und wie soll ich dieses bild mit dem code erzeugen? ein echo
                $_SESSSION['zufaelliger code'] geht ja nicht, oder doch?

                Das lässt sich zum Beispiel mit den Image Functions erledigen. Geometrische Formen und Text in verschiedenen Fonts, Winkeln, Farben, Größen... alles kein Problem.

                echo "$verabschiedung $name";

    2. Hallo Jörg.

      Weiterhin binde ich auf der Seite, die betroffen war, eine Grafik mit Buchstaben und Ziffern ein, die manuell in ein Feld eingetippt werden müssen.

      Wobei du hiermit im gleichen Atemzug sowohl die Spamming-Rate als auch die Nutzbarkeit senkst.
      Ob Screenreader oder andere Ausgabegeräte für sehgeschädigte mittlerweile per OCR-Prinzip Grafiken vorlesen können, kann ich nicht sagen.

      Aber selbst mir fällt es des Öfteren schwer, auf den verzerrten Grafiken die richtige Kombination aus alphanumerischen Zeichen zu erkennen.

      Einen schönen Dienstag noch.

      Gruß, Ashura

      --
      Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
      30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
      Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
      MathML fetzt
      1. Hi Ashura,

        Weiterhin binde ich auf der Seite, die betroffen war, eine Grafik mit Buchstaben und Ziffern ein, die manuell in ein Feld eingetippt werden müssen.

        Wobei du hiermit im gleichen Atemzug sowohl die Spamming-Rate als auch die Nutzbarkeit senkst.
        Ob Screenreader oder andere Ausgabegeräte für sehgeschädigte mittlerweile per OCR-Prinzip Grafiken vorlesen können, kann ich nicht sagen.

        Was natürlich auch wieder stimmt.

        Aber wenn man sich das ansieht: http://www.add-ons.de/gbuch.php, möchte man doch wirklich sichergehen, das sowas nicht passiert.

        Aber selbst mir fällt es des Öfteren schwer, auf den verzerrten Grafiken die richtige Kombination aus alphanumerischen Zeichen zu erkennen.

        Ja, manchmal ist es wirklich schlimm, vor allem dann, wenn sich in der Grafik noch irgendwelche Striche oder andere Zeichen befinden.

        Einen schönen Dienstag noch.

        Dito.

        Viele Grüße

        Jörg,

        der vom 4. bis 8. Oktober in Schlettau ist. ;-)

        1. Hallo Jörg.

          Aber wenn man sich das ansieht: http://www.add-ons.de/gbuch.php, möchte man doch wirklich sichergehen, das sowas nicht passiert.

          Diese Vernachlässigung kann ich in diesem speziellen Falle nicht nachvollziehen. Wäre die Site still gelegt, könnte ich es, doch der letzte Neuigkeiten-Eintrag stammt vom 10. September.
          Welche Gründe die Betreiber der Site haben, das Gästebuch nicht sauber zu halten, vermag ich nicht abzuschätzen.

          der vom 4. bis 8. Oktober in Schlettau ist. ;-)

          Was gibt es denn da zu dieser Zeit?

          Einen schönen Dienstag noch.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
          Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
          MathML fetzt
          1. Hi Ashura,

            Diese Vernachlässigung kann ich in diesem speziellen Falle nicht nachvollziehen. Wäre die Site still gelegt, könnte ich es, doch der letzte Neuigkeiten-Eintrag stammt vom 10. September.

            ja, viele Seitenbetreiber haben ihre Gästebücher stillgelegt, viele scheinen es aber auch nicht mitbekommen zu haben.

            Welche Gründe die Betreiber der Site haben, das Gästebuch nicht sauber zu halten, vermag ich nicht abzuschätzen.

            Vielleicht Urlaub? ;-)

            der vom 4. bis 8. Oktober in Schlettau ist. ;-)

            Was gibt es denn da zu dieser Zeit?

            Pilze? Nee, meine Eltern haben uns eingeladen, was wir natürlich dankend angenommen haben. Meine bessere Hälfte hatte zwar dieses Jahr Urlaub, ich aber noch nicht.

            Wir können zwar nicht bei meinen Eltern schlafen, weil sie gerade den Fußboden neu machen, aber sie sponsoren uns die Übernachtungen im Weißen Roß.

            Wenn Du Lust hast, können wir ja mal ein erzgebirgisches SELFHTML-Treffen veranstalten. ;-)

            Viele Grüße

            Jörg

            1. Hallo Jörg.

              der vom 4. bis 8. Oktober in Schlettau ist. ;-)

              Was gibt es denn da zu dieser Zeit?

              Pilze? Nee, meine Eltern haben uns eingeladen, was wir natürlich dankend angenommen haben. Meine bessere Hälfte hatte zwar dieses Jahr Urlaub, ich aber noch nicht.

              Dann wird es aber in der Tat allmählich Zeit.

              Wir können zwar nicht bei meinen Eltern schlafen, weil sie gerade den Fußboden neu machen, aber sie sponsoren uns die Übernachtungen im Weißen Roß.

              Ich denke, dass euch dass nicht allzu viel ausmacht, nicht?

              Wenn Du Lust hast, können wir ja mal ein erzgebirgisches SELFHTML-Treffen veranstalten. ;-)

              Die Idee ist recht gut, nur ein paar Leute mehr dürfen es schon werden, meinst du nicht auch?

              Einen schönen Dienstag noch.

              Gruß, Ashura

              --
              Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
              Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
              MathML fetzt
              1. Hi Ashura,

                Pilze? Nee, meine Eltern haben uns eingeladen, was wir natürlich dankend angenommen haben. Meine bessere Hälfte hatte zwar dieses Jahr Urlaub, ich aber noch nicht.

                Dann wird es aber in der Tat allmählich Zeit.

                ja, sowohl für die Pilze als auch für den Urlaub. ;-)

                Wenn Du Lust hast, können wir ja mal ein erzgebirgisches SELFHTML-Treffen veranstalten. ;-)

                Die Idee ist recht gut, nur ein paar Leute mehr dürfen es schon werden, meinst du nicht auch?

                Kommt denn sonst niemand aus der Ecke?

                Viele Grüße

                Jörg

                1. Hallo Jörg.

                  Die Idee ist recht gut, nur ein paar Leute mehr dürfen es schon werden, meinst du nicht auch?

                  Kommt denn sonst niemand aus der Ecke?

                  Ich weiß es nicht genau.
                  Ich bin der Meinung, dies von irgendjemandem vor einer Weile gelesen zu haben, aber wer es war, weiß ich leider nicht mehr...

                  Einen schönen Dienstag noch.

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
                  Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
                  MathML fetzt
      2. Ahoi Ashura,

        Ob Screenreader oder andere Ausgabegeräte für sehgeschädigte mittlerweile per OCR-Prinzip Grafiken vorlesen können, kann ich nicht sagen.

        dazu dient doch unter anderem das alt="" bei bildern, oder nicht?

        Aber selbst mir fällt es des Öfteren schwer, auf den verzerrten Grafiken die richtige Kombination aus alphanumerischen Zeichen zu erkennen.

        bei mir liegt das (nicht entschlüsseln) oft daran das eine schlechte
        schriftart genommen wurde und die Zahlen nich einheitlich ausgerichtet
        sind, da sieht eine 7 manchmal schon wie eine 1 aus. Manchmal ist
        auch schriftfarbe mehr oder weniger entsprechend der Hintergrundfarbe.

        MfG

        --
        Alle Angaben wie immer ohne Gewähr
        LEISE IST SCHEISSE!
        1. Hallo Daniel.

          Ob Screenreader oder andere Ausgabegeräte für sehgeschädigte mittlerweile per OCR-Prinzip Grafiken vorlesen können, kann ich nicht sagen.

          dazu dient doch unter anderem das alt="" bei bildern, oder nicht?

          Nun überlege ein Mal, warum dieser ganze Aufwand überhaupt gemacht wurde...

          bei mir liegt das (nicht entschlüsseln) oft daran das eine schlechte
          schriftart genommen wurde und die Zahlen nich einheitlich ausgerichtet
          sind, da sieht eine 7 manchmal schon wie eine 1 aus. Manchmal ist
          auch schriftfarbe mehr oder weniger entsprechend der Hintergrundfarbe.

          Exakt, dies und Ähnliches meinte ich.

          Einen schönen Dienstag noch.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
          Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
          MathML fetzt
          1. echo $begrüßung;

            Ob Screenreader oder andere Ausgabegeräte für sehgeschädigte mittlerweile per OCR-Prinzip Grafiken vorlesen können, kann ich nicht sagen.

            dazu dient doch unter anderem das alt="" bei bildern, oder nicht?

            Nun überlege ein Mal, warum dieser ganze Aufwand überhaupt gemacht wurde...

            Du verunsicherst mich. Mit der letzten Antwort gibst du zu erkennen, dass du weißt dass der Sinn darin besteht, ein automatisches Auslesen/Erkennen verhindern zu wollen. Doch oben forderst du das quasi solch ein automatisches Erkennen für Sehgeschädigte. Habe ich ein Ironiezeichen übersehen?

            echo "$verabschiedung $name";

            1. Ahoi dedlfix,

              Mit der letzten Antwort gibst du zu erkennen, dass du weißt dass der Sinn darin besteht, ein automatisches Auslesen/Erkennen verhindern zu wollen. Doch oben forderst du das quasi solch ein automatisches Erkennen für Sehgeschädigte. Habe ich ein Ironiezeichen übersehen?

              Nein hast du nicht, es geht darum das die Useability gesenkt wird
              dadruch, und zwar für sehbehinderte. dies könnte man ja ändern wenn man
              eine audiofile miteinbindet, welche die Zahlen vorließt.

              • das audio hilft Sehbehinderten
              • das bild Hörgeschädigten und Boxenlosen
                Somit hätte man wieder eine astreine Useability und einen spamschutz.

              MfG

              --
              Alle Angaben wie immer ohne Gewähr
              LEISE IST SCHEISSE!
            2. Hallo dedlfix.

              Du verunsicherst mich. Mit der letzten Antwort gibst du zu erkennen, dass du weißt dass der Sinn darin besteht, ein automatisches Auslesen/Erkennen verhindern zu wollen.

              Ja. Würde ein alt-Attribut mit der betroffenen Zeichenkette zum Bild gesetzt, könnte jeder einfache Spambot dieses auslesen.

              Doch oben forderst du das quasi solch ein automatisches Erkennen für Sehgeschädigte.

              Ich habe nichts gefordert. Ich habe mich gefragt, ob Anzeigegeräte für sehgeschädigte über solcher Art OCR-Fähigkeiten verfügen.

              Habe ich ein Ironiezeichen übersehen?

              Eher nicht.

              Einen schönen Mittwoch noch.

              Gruß, Ashura

              --
              Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
              Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
              MathML fetzt
              1. echo $begrüßung;

                Ich habe mich gefragt, ob Anzeigegeräte für sehgeschädigte über solcher Art OCR-Fähigkeiten verfügen.

                über die dann nicht zufällig auch so ein sehgeschädigter Spambot verfügen könnte?

                echo "$verabschiedung $name";

                1. Hallo dedlfix.

                  Ich habe mich gefragt, ob Anzeigegeräte für sehgeschädigte über solcher Art OCR-Fähigkeiten verfügen.

                  über die dann nicht zufällig auch so ein sehgeschädigter Spambot verfügen könnte?

                  Ausschließen kann ich dies leider nicht.

                  Einen schönen Donnerstag noch.

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Firefox tools for Opera built-ins
                  Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
                  MathML fetzt