Marc Reichelt: E-Mail Verifikation: Wie vorgehen?

Hallo an alle,

ich arbeite an einer Webseite, über die ich eine Online-Petition zu IPv6 veröffentlichen und Unterschriften sammeln möchte. Um die Petition unterschreiben zu können wird - wie im Web durchaus üblich - eine E-Mail mit einem Verifikationscode geschickt.

Das Ganze soll nun möglichst benutzerfreundlich und wenig nervend vonstatten gehen. Wie geht ihr hier vor? Ich dachte da an folgendes Prinzip:

1. Ist die E-Mail-Adresse des Benutzers noch nicht im System wird der Eintrag temporär übernommen und ihm eine E-Mail mit einem Verifikationscode geschickt.
2. Die Verifikation muss innerhalb von 48 Stunden erfolgen, während dieser Zeit werden dem Benutzer keine weiteren E-Mails geschickt.
3. Nach diesem Zeitraum wird der Eintrag aus der Datenbank gelöscht, wenn keine Verifikation erfolgt ist.

Soweit, so gut - habe ich hier etwas übersehen? Was könnte man verbessern?

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
panic("Oh boy, that early out of memory?");
        linux-2.2.16/arch/mips/mm/init.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  1. Hallo Marc!

    1. Ist die E-Mail-Adresse des Benutzers noch nicht im System wird der Eintrag temporär übernommen und ihm eine E-Mail mit einem Verifikationscode geschickt.

    könnte da nicht schon ein DNS Lookup das Vorhandensein zumindest des Servers garantieren und das Verschicken sinnloser Mails an Mail-Addi-Faker [1] unterbinden?

    [1] asdf@asdf.asdf

    und [2] Nein, ich weiß nicht, wie man so ein DNS Lookup macht, aber 1&1 macht das ;)

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --
    _ - jenseits vom delirium - _

       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
    1. Hallo Patrick,

      könnte da nicht schon ein DNS Lookup das Vorhandensein zumindest des Servers garantieren und das Verschicken sinnloser Mails an Mail-Addi-Faker [1] unterbinden?

      Sicher. Aber DNS Lookups brauchen auch ihre Zeit, und dann kann ich die E-Mail gleich rausschicken. ;)

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      DPRINTK("Last time you were disconnected, how about now?
      ");
              linux-2.6.6/drivers/net/tokenring/ibmtr.c
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      1. Hi,

        Es geht ja ausserdem auch darum, zu verifizieren, ob der Inhaber der Mail-Adresse diese auch selbst eingetragen hat, sprich: unterschreiben wollte, oder nicht? Ansonsten wäre das doch recht unseriös... ;)

        LG

        1. Hallo Karin,

          Es geht ja ausserdem auch darum, zu verifizieren, ob der Inhaber der Mail-Adresse diese auch selbst eingetragen hat, sprich: unterschreiben wollte, oder nicht? Ansonsten wäre das doch recht unseriös... ;)

          Klar - das ist der Grundgedanke dahinter. Deswegen wird ja der Verifikationscode benötigt.

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          DPRINTK("Last time you were disconnected, how about now?
          ");
                  linux-2.6.6/drivers/net/tokenring/ibmtr.c
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  2. Hi,

    1. Nach diesem Zeitraum wird der Eintrag aus der Datenbank gelöscht, wenn keine Verifikation erfolgt ist.

    Gefaehrlich - das bedeutet dann ja wohl, dass ich die fremde E-Mail-Adresse, die ich beim Mal zuvor schon angab, um $empfaenger mit deiner Mail zu nerven, die dieser gar nicht wollte, erneut angeben kann ...

    Rechtlich unangreifbares Double-Opt-In sollte verhindern, dass die Adresse nach ausbleibender Bestaetigung erneut verwendet werden kann - da du sonst ja nicht die Belaestigung durch eben dieses Verfahren auf eine einmalige beschraenkst, sondern weiterhin ermoeglichst.

    Gerade bei einer "politischen" Sache wie einer Petition findet sich sicherlich ein (derzeit) noch in Freiheit verbliebener von Gravenreuths Bruedern im Geiste, der dir damit eine reinzuwuergen versucht ...

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo ChrisB,

      »» 3. Nach diesem Zeitraum wird der Eintrag aus der Datenbank gelöscht, wenn keine Verifikation erfolgt ist.

      Gefaehrlich - das bedeutet dann ja wohl, dass ich die fremde E-Mail-Adresse, die ich beim Mal zuvor schon angab, um $empfaenger mit deiner Mail zu nerven, die dieser gar nicht wollte, erneut angeben kann ...

      Das ist richtig.
      Andererseits wird dem korrekten Benutzer so die Möglichkeit eröffnet, nach 48 Stunden einen neuen Versuch zu starten, wenn die erste E-Mail beispielsweise irgendwie verloren gegangen sein sollte. Und außerdem können so unsinnig eingegebene Adressen wieder aus dem System gelöscht werden.

      Rechtlich unangreifbares Double-Opt-In sollte verhindern, dass die Adresse nach ausbleibender Bestaetigung erneut verwendet werden kann - da du sonst ja nicht die Belaestigung durch eben dieses Verfahren auf eine einmalige beschraenkst, sondern weiterhin ermoeglichst.

      Du hast Recht - und das ist eben auch einer der Gründe, weshalb ich hier nachfrage.
      Auf der einen Seite steht der Komfort, auf der anderen Seite die Missbrauchsfunktion.

      Nur: welchen Weg soll ich nun am Besten einschlagen?

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      DPRINTK("Last time you were disconnected, how about now?
      ");
              linux-2.6.6/drivers/net/tokenring/ibmtr.c
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      1. echo $begrüßung;

        Nur: welchen Weg soll ich nun am Besten einschlagen?

        Hast du dir schon mal überlegt, eines der bereits vorhandenen Petitionssyteme zu nutzen?

        echo "$verabschiedung $name";

        1. Hallo dedlfix,

          »» Nur: welchen Weg soll ich nun am Besten einschlagen?

          Hast du dir schon mal überlegt, eines der bereits vorhandenen Petitionssyteme zu nutzen?

          Die da beispielsweise wären?

          Es gibt das Petitionssystem des Bundestags, aber die Petition zu IPv6 ist weniger an den Bund als direkt an die ISPs gewidmet. Es gibt PetitionOnline, das ist allerdings auf Englisch und kommt daher für mich nicht in Frage.

          Kurz zusammengefasst: Ich suche ein allgemeines, deutschsprachiges Petitionssystem, das nicht bereits an einen bestimmten Empfänger (z.B. Bund) gerichtet ist. Solange ich das nicht finde, wird eben eine eigene Seite extra für die Petition eingerichtet, die nach dem Abschluss der Petition auch wieder offline genommen werden kann.

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          DPRINTK("Last time you were disconnected, how about now?");
                  linux-2.6.6/drivers/net/tokenring/ibmtr.c
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      2. Hallo Marc,

        Nur: welchen Weg soll ich nun am Besten einschlagen?

        wenn keine Bestätigung kommt, kannst du ja noch einen zweiten Versuch erlauben, und erst wenn dieser auch nicht bestätigt wird, wird die Adresse endgültig gesperrt.

        Gruß, Jürgen

  3. Hallo nochmals,

    danke für die bisherigen Antworten.
    Ich denke, dass ich es nun so machen werde:

    1. Ist die E-Mail-Adresse noch nicht im System, so wird eine E-Mail mit einem Verifikationscode geschickt.
    2. Ist sie bereits im System, so wird keine weitere E-Mail geschickt.
    3. Der Benutzer hat nicht nur 48 Stunden Zeit, sondern kann jederzeit, nachdem er die Mail bekommen hat, auf den Verifikationslink klicken.

    Das ist IMHO die beste Lösung, oder gibt es auch hier Schwachstellen?

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    DPRINTK("Last time you were disconnected, how about now?");
            linux-2.6.6/drivers/net/tokenring/ibmtr.c
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      1. Der Benutzer hat nicht nur 48 Stunden Zeit, sondern kann jederzeit, nachdem er die Mail bekommen hat, auf den Verifikationslink klicken.

      Das ist IMHO die beste Lösung, oder gibt es auch hier Schwachstellen?

      Ich sag dir mal was _ich_ mache, wenn ich einen Dienst nur einmal verwenden will:
      Ich lege mir eine Wegwerfadresse an!
      (z.b. nervmich.net oder guerrillamail.com)

      Für einmalige Sachen ist es das Risiko einfach nicht wert eine tatsächliche Adresse weg zu geben, die Gründe dürften klar sein (Spam anyone?).
      Um das zu umgehen würde ich das Gegenteil machen wie der oben zitierte Teil, ich würde die Mail eben nicht sofort verschicken und dann (jetzt doch nicht) binnen 48h verifizieren lassen, sondern ich würde die Mail "irgendwann in den nächsten zwei Wochen" verschicken oder alle auf einmal kurz vor Ende der Petition, man meldet sich also quasi nur zur Unterschrift an.

      ggf. kann man noch anbieten eine Dump-Mail sofort zu schicken, damit der Unterschreiber seinen Spam-Filter schoneinmal so einstellen kann, dass er die Mail durch lässt.

      Netter Nebeneffekt: Der Unterschriftswillige wird noch einmal an seine Stimme erinnert und überprüft ggf. nochmal seinen Erfolg.

      Naja und die andere Schwachstelle ist wohl offensichtlich, wie viele E-Mail-Adressen hast du? Wie oft kann man dann abstimmen?
      Aber das lässt sich wahrscheinlich nicht so leicht lösen. Außer vielleicht (und damit bekommt man beide Probleme in den Griff) man nimmt nur Adressen von ISPs, denn deren Kunden sind ja verifiziert, während ich mir beliebig Adressen bei gMail, web.de oder yahoo holen kann. _Das_ allerdings wäre wieder unbequem, denn wer benutzt schon die Postfächer seines ISP (das ändert sich ja alle 24 Monate)?

      --
      sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(