Bernard: Passwort per mail

Hallo,

ich programmiere gerade für eine Firma eine Seite, bei der man sich registrieren kann und dann auf den Server einige Objekte, in diesem Fall Bilder mit Beschreibungen und Daten, hochladen kann.
Das klappt auch alles schon sehr gut, aber im Moment ist es so das die Passwörter der Kunden noch unverschlüsselt in der Datenbank liegen.
Außerdem ist es so, das der Kunde direkt das Passwort das er gewählt hat benutzen kann (kein Passwort per E-Mail) und somit noch nicht einmal richtige Daten eingeben muß .
Nun habe ich mir gedacht, bevor ich die Seite hochlade mache ich das noch vernünftig.
Passwort wird bei Anmeldung  per Zufall generiert und dann in DB geschrieben und an den Kunden per mail gesendet.
Meine Frage ist:
1.) So kann der Administrator doch immer noch die Passwörter einsehen.
Klar ist mir das ich als Admin zwar eh Daten in der Datenbank ändern kann, z.B. hochgeladene Objekte, aber man greift doch in ein Stück Privatsphere ein indem man die Passwörter sieht. Sind bestimmt bei vielen Kunden nicht nur auf der Seite die Passwörter.
Soll ich die Passwörter bevor sie in die DB geschrieben werden  md5 verschlüsseln ? Wenn ja , wie kann ich dann das "Passwort vergessen ?"-Script realisieren. Kann dem Kunden ja nicht per mail ein riesenzeichensatz schicken.
Hat irgendwer Erfahrungen in diesem Bereich ?

mfg

Bernard

  1. hallo!

    1.) So kann der Administrator doch immer noch die Passwörter einsehen.
    Klar ist mir das ich als Admin zwar eh Daten in der Datenbank ändern kann, z.B. hochgeladene Objekte, aber man greift doch in ein Stück Privatsphere ein indem man die Passwörter sieht. Sind bestimmt bei vielen Kunden nicht nur auf der Seite die Passwörter.
    Soll ich die Passwörter bevor sie in die DB geschrieben werden  md5 verschlüsseln ? Wenn ja , wie kann ich dann das "Passwort vergessen ?"-Script realisieren. Kann dem Kunden ja nicht per mail ein riesenzeichensatz schicken.

    also ich würd es wie folgt anstellen (eigentlich ganz einfach). du erstellst ein zufallspasswort, scpeicherst es verschlüsselt (beispielsweise mit md5) in der db und schickst es aber unverschlüsselt an die mailadresse.

    bei der passwortabfrage gibt der user das passwort dann ein und bevor du es auf gleichheit vergleich verschlüsselst du die eingabe wieder. fertig ist das script. doch eigentlich ganz einfach oda?

    sollte er es mal vergessen so generierst du wieder nen neues pw, löscht das alte und gehst dann genauso wie oben vor (verschlüsselt speichern, an user senden etc...)

    tschau

    1. Hi,

      hört sich gut an.
      Kann ich mir sichersein das md5 immer dieselbe Zeichenkette aus demselben Wort bildet ?

      mfg

      Bernard

      1. hallo!

        Kann ich mir sichersein das md5 immer dieselbe Zeichenkette aus demselben Wort bildet?

        ja, kannst du dir! sonst wärs als verschlüsselungsalgorithmus ja nutzlos.

        tschauzi

      2. Hallo,

        Kann ich mir sichersein das md5 immer dieselbe Zeichenkette aus demselben Wort bildet ?

        Nicht ganz, denn unter Wort versteht man allgemein einen sprechbaren Begriff mit Bedeutung, den man sich merken kann. Wenn der Kunde nun Groß/Kleinschreibung missachtet oder Zeichen aus dem Zeichensatz außerhalb 7bit (0-127) benutzt, kann man sicher keine 100%ige Funktionstüchtigkeit garantieren.

        Grüße

        Chris (C)

        1. Hallo,

          Kann ich mir sichersein das md5 immer dieselbe Zeichenkette aus demselben Wort bildet ?

          Nicht ganz, denn unter Wort versteht man allgemein einen sprechbaren Begriff mit Bedeutung, den man sich merken kann. Wenn der Kunde nun Groß/Kleinschreibung missachtet oder Zeichen aus dem Zeichensatz außerhalb 7bit (0-127) benutzt, kann man sicher keine 100%ige Funktionstüchtigkeit garantieren.

          das mußt Du aber mal näher erläutern!!!
          Das würde mein ganzes Verständnis für md5 und crypt() völlig über den Haufen werfen!

          Gruß
          Reiner

          1. Hallo,

            bei meiner Antwort ging es um den "social"-Teil von Social Engineering.

            Die Daten, die auf dem Server ankommen, werden selbstverständlich immer gleichartig weiterverarbeitet.

            Grüße

            Chris (C)

            1. Hi,

              bei meiner Antwort ging es um den "social"-Teil von Social Engineering.

              ich glaube, da vermischst Du eine Menge Dinge. Definier mal bitte "Social Engineering"!
              Du meinst wohl eher Usability bzw. Handling und Fehlerabfangen...

              Die Daten, die auf dem Server ankommen, werden selbstverständlich immer gleichartig weiterverarbeitet.

              Ich glaube, das war auch die Frage!

              gruß
              Reiner

  2. Hallo Bernard,

    ich programmiere gerade für eine Firma eine Seite, bei der man sich registrieren kann und dann auf den Server einige Objekte, in diesem Fall Bilder mit Beschreibungen und Daten, hochladen kann.
    Das klappt auch alles schon sehr gut, aber im Moment ist es so das die Passwörter der Kunden noch unverschlüsselt in der Datenbank liegen.

    Verhindere, dass die Datenbank kompromittiert wird - das Verschlüsseln der Passwörter kann natürlich ein Sicherheitsgewinn sein, sofern Passwörter und damit verbundene Daten getrennt sind (was anscheinend hier der Fall ist).

    Passwort wird bei Anmeldung  per Zufall generiert und dann in DB geschrieben und an den Kunden per mail gesendet.

    Diese Möglichkeit würde ich dem benutzergewählten Passwort auch vorziehen.

    Meine Frage ist:
    1.) So kann der Administrator doch immer noch die Passwörter einsehen.
    Klar ist mir das ich als Admin zwar eh Daten in der Datenbank ändern kann, z.B. hochgeladene Objekte,

    Ja, eben?! Nicht die Passwörter, sondern die mit dem Benutzeraccount zusammenhängenden Daten (anscheinend die Bilder) sind privat. Und derjenige Administrator, die direkt die Datenbank und das angeschlossene Webanwendung wartet und programmiert, muss zwangsläufig Zugriff darauf haben. Dieser Person muss natürlich vertraut werden, dass sie verantwortungsvoll mit den Daten umgeht, das heißt die privaten Daten möglichst nicht liest beziehungsweise nicht mehr als bei akuten administrativen Eingriffen nötig.

    aber man greift doch in ein Stück Privatsphere ein indem man die Passwörter sieht.

    Klartextpasswörter sind das kleinere Problem, wenn es dir darum geht, die persönlichen Daten vor den Blicken der Admins zu schützen.

    Sind bestimmt bei vielen Kunden nicht nur auf der Seite die Passwörter.

    Was meinst du damit? Wenn sie automatisch vom System generiert werden, werden sie vom Benutzer vermutlich in der Regel nicht mehrfach eingesetzt. Natürlich darf der Entwickler und Systemadmin die Kundendaten nicht missbrauchen - wie gesagt.

    Soll ich die Passwörter bevor sie in die DB geschrieben werden  md5 verschlüsseln ?

    Sofern du den Zugriff auf die Datenbank (welche vermutlich noch weitere heikle private Daten enthält) ausreichend reglementieren kannst, ist die Verschlüsselung der Passwörter selbst vernachlässigbar. Wenn du sie »hashen« willst, um »Angriffe« von *innen* abzuwehren, ist es unpassend, denn wer Zugriff auf die Datenbank hat, hat vermutlich auch direkten Zugriff auf die darüber nach außen gesicherten Benutzerdaten und braucht die Passwörter nicht einmal.

    Mathias

    --
    ss:¬ zu:¬ ls:¬ fo:¬ de:¬ va:¬ ch:¬ sh:¬ n4:¬ rl:¬ br:¬ js:¬ ie:¬ fl:¬ mo:¬
    Auflösung != Desktopgrösse != Browserfenstergrösse != Anzeigebereich. [psf 3.7]