Linda: Schutz vor Massenanmeldung (Mailaktivierung)

Hallo Forumer,

das gesuchte ist schon im Thema definiert.

Ich habe eine Seite auf der User sich registrieren können. Zum Schutz gegen Massen- und Scherzanmeldung, möchte ich dass der User gezwungen ist, nach der Anmeldung sein Email-Postfach zu überprüfen und eine Bestätigung seiner Anmeldung zu senden. Dafür steht in der von mir nach der Anmeldung generierte Email ein Link auf meine Seite, auf den der User klicken sollte. Ist die Anmeldung nicht bestätigt, verfällt der Account innerhalb von 24 Stunden.

Ich bin kein Newbie :) Ich suche nur nach einem eleganten Lösungsansatz. Habt ihr vielleicht etwas da? Denkanstöße, Überlegungen zum Thema, Tutorials - ich nehme alles :)

Danke!

  1. Hello,

    В Хургаде пропали любители дайвинга из России

    Was heißt das denn?
    Ist ja auch schon eine Art Schutz ;-))
    (siehe diverse Beiträge von Sven Rautenberg zum Thema Obscurity)

    Wenn jemand seine eMail-Adresse längere Zeit aufrecht erhält (3 Monate und mehr), dann sollte sie schon "echt" sein. Demnächst wird doch von herrn Schily sowieso alles aufgezeichnet. Da würde ich mei keine Hoffnungen mehr auf Anonymität machen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. grüß dich

      В Хургаде пропали любители дайвинга из России

      Unsinn, die sind nicht verschwunden, die sind untergetaucht ;)

      Wenn jemand seine eMail-Adresse längere Zeit aufrecht erhält (3 Monate und mehr), dann sollte sie schon "echt" sein. Demnächst wird doch von herrn Schily sowieso alles aufgezeichnet.

      Problem erfasst? Ich will keine Echtheit der Adresse überprüfen, sondern es den Scherzkekse in den Sommerferien etwas schwerer machen, Massenanmeldungen zu starten. Zumindest bei mir :)

      Linda

      1. Hi Linda,

        Ich will keine Echtheit der Adresse überprüfen, sondern es den Scherzkekse in den Sommerferien etwas schwerer machen, Massenanmeldungen zu starten. Zumindest bei mir :)

        Wie erfolgen denn diese Massenanmeldungen? Wenn diese Massenmeldungen automatisch, also nicht von Hand passieren (z.B. mit einem Script, dass zig Post Request an deinen Server schickt), dann kannst du eine Grafik mit zufälligen Buchstaben darin erzeugen und den Besucher bitten, diese abzuschreiben. So was sieht man schon mal öfter - und Scripte haben dagegen keine Chance.

        Handelt es sich jedoch um Massenanmeldungen von Hand, dann wird das mit dem Freischaltlink in der E-Mail wohl das beste sein - allerdings kann das auch User abhalten, ich mag so Sachen z.B. überhaupt nicht und wenn es nicht unbedingt sein muss, verzichte ich in so einem Fall lieber auf die Registrierung.

        Eine dritte Möglichkeit dieses Problem anzugehen wäre vielleicht folgende: Der User soll sich doch ruhig so viele Accounts machen, wie er will. Allerdings (vermutl. tust du das eh schon) speicherst du in der DB noch den Zeitpunkt des letzten Logins mit ab. Dann kannst du irgendwann mal hingehen und alle User rauslöschen, die sich länger als 3 Monate oder so nicht mehr angemeldet haben.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
        Das Leben ist kein Warenhaus - es nimmt nichts zurück. (Anette Louisan)
        1. Hi Dennis,

          ja, ich speichere in der Datenbank die UserLastAction :). Ich möchte aber ungern die Accounts entfernen, die bestätigt wurden. Es liegt an der Spezifika der Seite, dass die User _teilweise_ sehr unregelmäßig vorbeischauen. Es sind aber von jedem User die Daten abgespeichert, die sehr wichtig auch nach Monaten (Jahren) sein können. Es dreht sich alles um Gesundheit bzw. eigene Beobachtung, so eine Art gesundheitliches Tagebuch (grob beschrieben ). Ich kann diese Daten nicht verwerfen.

          Natürlich könnte ich die Account, zu denen gar keine weitere Daten vorliegen, nach eine bestimmte Zeit rauslöschen, es werden aber bereits bei der Anmeldung wichtige Daten gespeichert, die später in die Gesamtstatistik der Seite reinfliessen.

          Nicht destotrotz, ich habe mir bereits die Taktik ausgedacht :) Bei der Anmeldung wird ein eindeutiger String (mit md5() oder so) generiert und in die Datenbank gespeichert. Dann wird ein Link per Email verschickt, der als GET-Variable genau diesen String liefert. Auf der Activierungsseite wird der String auf Vorhandensein in der Datenbank verglichen und der dazugehöriger User aktiviert. Ich denke, das es am einfachsten ist.

          Danke für deine Überlegung. Ich werde es mir noch mal durch den Kopf gehen lassen.

          Linda

          1. Hello,

            wenn ich "Gesundheit" lese, dann besteht auch die Frage, inwieweit Du die Daten überhaupt noch ohne tatsächliche Rückmeldung in Schriftform (also per Snail Mail) speichern darfst.

            Auf jeden Fall musst Du ein regelmäßiges Anbieter-Kundenverhältnis unterhalten, um die persönlichen Daten dauerhaft speichern zu dürfen. Nach dem letzen nachweisbaren Kontakt darfst Du nur noch die geschäftamäßigen Daten des Kunden (die, um den Kontakt aufrecht zu erhalten) speichern, es sei den Du wärest jetzt Arzt oder Krankenhaus, dann wärest Du wiederum zur Aufbewahrung der persönlichen Gesundheitsdaten verpflichtet, aber ggf. in anonymisierter Form.

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. wenn ich "Gesundheit" lese, dann besteht auch die Frage, inwieweit Du die Daten überhaupt noch ohne tatsächliche Rückmeldung in Schriftform (also per Snail Mail) speichern darfst.

              Stimmt auch. Muss ich noch überprüfen. Es gibt aber die Möglichkeit, dass die User ihre Daten selbst entfernen. Es geht halt um private Beobachtungen, ich darf doch öffentlich erwähnen, dass ich vor zwei Wochen Kopfschmerzen hatte, oder? :) Nur, wenn ich es in zwei Monaten nicht mehr weiß, dann will ich nachschauen können.

              Auf jeden Fall musst Du ein regelmäßiges Anbieter-Kundenverhältnis unterhalten, um die persönlichen Daten dauerhaft speichern zu dürfen.

              Was heißt regelmäßig? Wer legt es fest? Wenn der User alle 3 Monaten vorbeischaut, dann halbes Jahr nicht und dann wieder kommt. Ist es regelmäßig? Definitionssache? Oder gibt es da bereits rechtliche Rahmen?

              Gruß, Linda

              1. Hello,

                Was heißt regelmäßig? Wer legt es fest? Wenn der User alle 3 Monaten vorbeischaut, dann halbes Jahr nicht und dann wieder kommt. Ist es regelmäßig? Definitionssache? Oder gibt es da bereits rechtliche Rahmen?

                Das regelt gegenüber Privatleuten das BDSG
                http://www.datenschutz-berlin.de/recht/de/bdsg/bdsg1.htm#absch1

                Bitte auch Teil zwei lesen.

                Wenn man es nicht beachtet, kann es schnell teuer werden.
                Allerdings kann man in Deutschland scheinbar auch wegen Armut mit Haft bedroht werden.
                Der Schuldturm lauert überall.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Moin!

                  Das regelt gegenüber Privatleuten das BDSG
                  http://www.datenschutz-berlin.de/recht/de/bdsg/bdsg1.htm#absch1

                  Bitte auch Teil zwei lesen.

                  Bitte ganz oben lesen: "alte, nicht mehr geltende Fassung" - sogar in Rot.

                  Lieber beim Innenministerium gucken: http://bundesrecht.juris.de/bundesrecht/bdsg_1990/

                  Wenn man es nicht beachtet, kann es schnell teuer werden.

                  §§ 43, 44 - Strafvorschriften

                  • Sven Rautenberg
          2. Hi Linda,

            Bei der Anmeldung wird ein eindeutiger String (mit md5() oder so) generiert und in die Datenbank gespeichert.

            Da hatte ich doch schon mal was gepostet... ;-)

            Dann wird ein Link per Email verschickt, der als GET-Variable genau diesen String liefert. Auf der Activierungsseite wird der String auf Vorhandensein in der Datenbank verglichen und der dazugehöriger User aktiviert.

            Richtig, das ist die gängige Vorgehensweise für so etwas.

            Btw: Dürfen eigentlich mehrere User die gleiche E-Mail Adresse angeben? Wenn nicht, ließe sich obiges System immer noch durch ein Script „austricksen”, also dass ein Script massenweise Accounts anlegen könnte. Wenn nicht, ginge es zwar theoretisch auch noch, wäre aber schwieriger ;-)

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
            Dies hier ist ein öffentliches Forum - wer dir hier geholfen hat, hat dies vollkommen freiwillig und unter Aufopferung seiner Freizeit getan!
            1. Hello,

              Btw: Dürfen eigentlich mehrere User die gleiche E-Mail Adresse angeben? Wenn nicht, ließe sich obiges System immer noch durch ein Script „austricksen”, also dass ein Script massenweise Accounts anlegen könnte. Wenn nicht, ginge es zwar theoretisch auch noch, wäre aber schwieriger ;-)

              Wenn ein Account nur zweistufig verifiziert wird, muss der Böse Bube schon in der Hülle des Account führenden Hosts stecken, also beim Provider, beim Zonenverwalter oder so... Es muss sich also auf jeden Fall um jemand mit "professioneller krimineller Energie" handeln, und nicht um einen "Hobby-Hacker", der selber auf einer Entität im Routing-System sitzt und keine Alternativzugänge zu inneren Knotne besitzt.

              Die breite Masse (ca. 99,9%?) wird man also durch das "vereinfachte Zertifikats-Verfahren" vom Blödeln abhalten können.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
            2. Hi Tom

              Da hatte ich doch schon mal was gepostet... ;-)

              Sieht gut aus. Nehme ich :)

              Btw: Dürfen eigentlich mehrere User die gleiche E-Mail Adresse angeben?

              Nö, dürfen sie nicht. Emails werden bei Anmeldung mit der Datenbank verglichen, genauso wie Loginnamen. Man kann aber per Script immer noch was "gültiges" generieren:

              for ($i=0;$i<100;$i++) {
                $mail='test'.$i.'@test.de';
              }

              oder so... Davor kann ich mich nicht schützen. :(

              Linda

              1. Hi Linda,

                Nö, dürfen sie nicht. Emails werden bei Anmeldung mit der Datenbank verglichen, genauso wie Loginnamen. Man kann aber per Script immer noch was "gültiges" generieren. Davor kann ich mich nicht schützen. :(

                Doch, eben durch die Methode mit dem Freischaltlink - wer macht sich schon die Mühe 100 E-Mail Konten durchzusehen? [1]

                [1] Ein Catch-All Postfach würde dies natürlich erleichtern, das steht aber nicht jedem Hobby-Hacker zur Verfügung.

                MfG, Dennis.

                --
                Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
                Auf viele Fragen weiß auch Wikipedia eine Antwort.
        2. Hi,

          dann kannst du eine Grafik mit zufälligen Buchstaben darin erzeugen und den Besucher bitten, diese abzuschreiben. So was sieht man schon mal öfter - und Scripte haben dagegen keine Chance.

          Blinde oder ggf. Farbenblinde (je nach Wahl der Farben in der Grafik) oder Textbrowsernutzer oder OhneGrafikSurfer auch nicht.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi MudGuard,

            dann kannst du eine Grafik mit zufälligen Buchstaben darin erzeugen und den Besucher bitten, diese abzuschreiben. So was sieht man schon mal öfter - und Scripte haben dagegen keine Chance.

            Blinde oder ggf. Farbenblinde (je nach Wahl der Farben in der Grafik) oder Textbrowsernutzer oder OhneGrafikSurfer auch nicht.

            Hm, da habe ich gar nicht dran gedacht - und man kann den Wert ja schließlich auch nicht ins Alt-Attribut schreiben, dann wäre die ganze Grafik ja zwecklos ;-)

            Vielleicht wäre es ja eine Möglichkeit, die Buchstaben in Lautschrift ins Alt-Attribut zu schreiben? Also irgendie so was: ka iks fau acht null be :-))

            MfG, Dennis.

            --
            Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
            Sinnvolles Zitieren: Man zitiert nur Teilsätze des Vorposters auf die man sich bezieht! Nicht einfach alles.
  2. Danke an alle! Eine Fülle an Informationen zum Verdauen.

    Zum Thema noch die Überlegung die formularbearbeitende Seite auf $_SERVER['HTTP_REFERER'] zu überprüfen. So dass, nur die Anfragen vom eigenem Server zugelassen werden. Habe noch nicht rausgefunden, ob und wie schwierig dies zu manipulieren ist, aber alle Maßnahmen zusammen werden schon ihr Zweck erfüllen.

    Auf dass die Datenbank sauber bleibt und die halbstarken kein Spaß haben!

    Linda

    1. Hi Linda,

      Zum Thema noch die Überlegung die formularbearbeitende Seite auf $_SERVER['HTTP_REFERER'] zu überprüfen. So dass, nur die Anfragen vom eigenem Server zugelassen werden.

      Dir ist aber bewusst, dass der Referer auch unterdrückt werden kann (also leer ist) oder von Firewalls mit falschen Inhalten versehen bzw. für Werbezwecke benutzt wird?

      Habe noch nicht rausgefunden, ob und wie schwierig dies zu manipulieren ist, aber alle Maßnahmen zusammen werden schon ihr Zweck erfüllen.

      Eine Manipulation (per Script, aber auch in manchem Browser) ist sehr einfach.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
      Dies hier ist ein öffentliches Forum - wer dir hier geholfen hat, hat dies vollkommen freiwillig und unter Aufopferung seiner Freizeit getan!
      1. hallo Dennis,

        Dir ist aber bewusst, dass der Referer auch unterdrückt werden kann (also leer ist) oder von Firewalls mit falschen Inhalten versehen bzw. für Werbezwecke benutzt wird?

        War mir nicht bewusst. Danke für den Tip. Dann brauche ich mich mit der Sache gar nicht zu beschäftigen.

        Gruß, Linda