Alapértelmezett jelszó kiküldése

Alapértelmezett jelszó kiküldése
2011-07-27T19:04:20+02:00
2011-08-01T20:54:12+02:00
2022-11-22T16:20:34+01:00
akuli
Üdv,

Időnként n darab új user kerül egyszerre a userek közé, egy default jelszó md5-el el lesz tárolva nekik.
Így a következő körlevelet megkapják. A cél az, hogy a körlevél tartalmazza ezt a default jelszót, hogy "tessék, új user, itt a felhasználói neved és az alapértelmezett jelszavad, lépj be", ezzel megspórolva a regisztrációt (mivel ők még értelemszerűen nem léptek be, megkapják ezt a felh. név - jelszó párost). Az a kérdésem, hogy hogyan kellene tárolni ezt az alapé. jelszót ?
Arra gondoltam, hogy a usert kiegészítem egy default_password attribútummal, majd amikor a user belép (és jelszót is változtat), vagy forgotten password funkciót használja, akkor ezt a default_password értéket kinullázom, így csak az md5 hashelt marad bent, azaz ez továbbá nem érvényes.
Van erre praktikusabb megoldás ?
Köszi
Mutasd a teljes hozzászólást!
ments el egy egyedi kódsort, amit aktivációs levélbe elküldesz, vagy szövegesen vagy linkben. Ez elvezeti egy aktivációs procedúrához, rákattint a linkre, ezzel aktiválja a fiókját,
amint sikeres az aktiváció, emailt küldesz neki egyből, beleírod a jelszavát amit generáltál, táblába meg az md5-ös jelszavát mented el csak és első belépésnél meg szépen megváltoztatja.
Mutasd a teljes hozzászólást!

  • pl. generálsz neki egy véletlenszerű jelszót, azt küldöd ki neki, és md5-el azt tárolod le.

    Így ugyan úgy tud belépni, mintha saját jelszava lenne már.
    Mutasd a teljes hozzászólást!
  • "ezzel megspórolva a regisztrációt"


    - Te generálod a felhasználónevet is, mi alapján?
    - Ha nem, miért nem adhatja meg a user a jelszót is?
    - Minek a plusz (kettő) jelszó mező?

    A legutóbbi oldalon amit csináltam hasonlóan meghívásos alapon lehet regisztrálni. De a username/password a felhasználó döntése. Amikor kimegy a levél eltárolódik az email cím és egy egyedi kulcs (uuid) az invites táblában (+hozzá lehet csapni egy expire_date mezőt ha kell). A levélben a link tartalmazza a kulcsot, ami egy űrlaphoz vezeti a felhasználót. Annyi a dolga, hogy beírja a felhasználónevet, illetve a jelszót kétszer.
    Mutasd a teljes hozzászólást!
  • No igen, ez így is történik, generálok, letárolom md5-tel, de ebben a pillanatban nem küldök neki emailt. Az csak x nap után történik meg. Így tehát nem tudom neki kiküldeni, mivel le sem tároltam. (ugye csak az md5 lenyomat van meg)

    és igen, úgy kellene belépnie, mintha ez lenne a jelszava (és valóban elsőre az is), csak valahogy a tudomására kellene hoznom.
    Ezért gondoltam egy második jelszó mezőre (plain textben a generált jelszó), amely csak egy eseményig tartalmaz infót.
    Mutasd a teljes hozzászólást!
  • A felh. név az az email cím.
    User alapból kap egy generált jelszót.
    Lásd előző hozzászólásomat, ott van válasz a 2 jelszó mezőre.

    Amit szeretnék, hogy az emailből a user csak elnavigál az oldalra egy linkkel és ott csak a jelszavát (generált) írja be, melyet előzőleg megkapott emailben.
    Mutasd a teljes hozzászólást!
  • "
    Amit szeretnék, hogy az emailből a user csak elnavigál az oldalra egy linkkel
    "

    Tehát amíg nem kapja meg az értesítő emailt, addig meg sem próbál belépni. Mi indokolja, hogy a jelszó legyen "ugrásra készen" letárolva? Generáld le akkor, amikor az emailt küldöd.

    "
    úgy kellene belépnie, mintha ez lenne a jelszava (és valóban elsőre az is), csak valahogy a tudomására kellene hoznom
    "

    Nem az emaillal hozod a tudomására? Ez esetben nem értem. :)
    Mutasd a teljes hozzászólást!
  • ments el egy egyedi kódsort, amit aktivációs levélbe elküldesz, vagy szövegesen vagy linkben. Ez elvezeti egy aktivációs procedúrához, rákattint a linkre, ezzel aktiválja a fiókját,
    amint sikeres az aktiváció, emailt küldesz neki egyből, beleírod a jelszavát amit generáltál, táblába meg az md5-ös jelszavát mented el csak és első belépésnél meg szépen megváltoztatja.
    Mutasd a teljes hozzászólást!
  • Az indokolja, hogy már ki lett küldve. Így volt aki már belépett és volt aki nem. -->
    De most reggel visszaolvasva a topikot, úgy tűnik, hogy elhallgattam egy fontos információt.
    Eleddig plain textben voltak a jelszavak. (persze rettentő amatőr, de mostanra megtudom őket válotztatni, mivel érintett egy másik projectet is ..., de most a "miértek" mindegy)

    Tehát szépen az összes user jelszava md5-tel lesz eltárolva, azonban a gond ott lesz, hogy akiknek még a default van, azokat ismét ki kellene majd küldeni. Csak ugye az md5 generálása után már ez nem lenne lehetséges.
    Mutasd a teljes hozzászólást!
  • Igen, ez a megoldás szimpatikus lenne nekem is, mivel ez történik a regisztrációkor is; azzal a különbséggel, hogy már az első emailben ki van küldve a felh. név és jelszó páros (már md5-ös), csak a user level van beállítva egy inaktív értékre. Mikor az aktiváló linkre kattint, akkor ez az inaktív érték változik meg, s az egyedi kódsor törölve.
    Így, egy plusz email is meg van spórolva.

    (ugye ha fake az email cím, akkor az aktiváló kódsor sem fog soha visszakerülni)
    Mutasd a teljes hozzászólást!
  • Végül is az lesz a megoldás, hogy az elfelejtett jelszó funkciót használom fel újra, tehát nem küldöm ki a jelszót, hanem csak egy tokent, melyet az emailből linken visszaküldve azonosítok, így a felh. kap egy "return" emailben felh. nevet és (újra)generált jelszót, akárcsak ha "elfelejtette" volna.

    szerk: amikor a későbbiekben körlevélkor ismét ki szeretném küldeni a jelszót annak, aki még nem lépett be.(pontosabban a tokent a jelszó helyett)

    Köszönöm a hozzászólásokat.
    Az elfogadott válasz áll szerintem ehhez a verzióhoz legközelebb.
    (mert ott van említve először az "egyből" jelszó visszaküldés)
    Mutasd a teljes hozzászólást!
  • Tőled:
    de ebben a pillanatban nem küldök neki emailt

    Mondtam én, hogy mikor küldjed neki? De amikor küldöd, akkor a jelszót küld, és md5-el tárold.


    djjozsi 2011.07.28. 07:17:
    emailt küldesz neki egyből, beleírod a jelszavát amit generáltál, táblába meg az md5-ös jelszavát mented el...


    Micu 2011.07.27. 19:09:
    generálsz neki egy véletlenszerű jelszót, azt küldöd ki neki, és md5-el azt tárolod le.

    Mutasd a teljes hozzászólást!
  • Gondolkodtam rajta valóban, hogy az első hsz.-t fogadjam-e el, de emiatt a részlet miatt ("amint sikeres az aktiváció, emailt küldesz neki egyből,") kattintottam az elfogadottra. Ha a moderátor úgy kívánja, módosítható a pontozás, én nem bánom. Talán jobban meg tudja ítélni, hogy igazságosabb-e.
    Mutasd a teljes hozzászólást!
  • Alapvetően mindegy, de én a kérdésedben nem látom, hogy a ilyen 3 szintes rendszert kértél volna.


    Így, egy plusz email is meg van spórolva.

    Persze, mert javaslatom szerint a regisztációkor kap egy e-mailt, ha meg kap egy aktiválási linket, és ha kattintott, akkor utána meg egy jelszó levelet, akkor pont 2 megy.

    --
    Egyébként ha már úgy is van egy meződ, hogy aktivált-e, akkor az első belépéskor nyugodtan billentheted.

    Tehát:
    1. regisztrált
    2. kiküldöd az e-mailt a jelszavával a jelszavát md5-el tárolod, és egy mező pl. 0-ba van.
    3. Ha belépett (a jelszavával), akkor a 0-t 1-be tenném.
    Mutasd a teljes hozzászólást!
  • Így, egy plusz email is meg van spórolva.
    Persze, mert javaslatom szerint a regisztációkor kap egy e-mailt, ha meg kap egy aktiválási linket, és ha kattintott, akkor utána meg egy jelszó levelet, akkor pont 2 megy.


    Jogos, regisztrációkor 1 db email megy ki, aktiváláskor 2 db (1 a linkkel, 1 utána a jelszóval).

    1. 2. 3. lépések eddig is így voltak megvalósítva.

    Eredetileg azokkal problémáztam, akik admin által kerültek be, hogy ők hogyan kapják meg a jelszavukat később? Erre jött, hogy aktiváló linket kapnak inkább és arra kattintva kapják meg a jelszavukat. Valóban így 2 emailes a dolog. (eddig a körlevélben megkapta simán a jelszót, ha még nem lépett be)
    Mutasd a teljes hozzászólást!
  • akik admin által kerültek be,

    (Szerintem pont erről nem volt szó a kérdésedben )

    Azok a bekerüléskor kapják meg a levelet. Vagy az admin direktbe (pl. phpmyadmin) viszi fel az adatbázisba őket?
    Ha igen, akkor szerintem a direkt beíráskor kell egy pl. 8 (tehát kevesebb karakteres, mint az md5 kód) karakteres jelszó nekik, azt tárolni a jelszók között (ugyan ott mint később az md5-t).

    Amikor valaki belép, akkor lehívni a bejelentkező neve alapján a jelszavát. md5-el megnézni a küldött és a táblából kivett jelszót. Ha egyezik, semmi gond.

    Ha nem egyezik, megnézed, hogy kódolatlanul megegyezik-e.
    Ha nem, akkor illegális belépés.

    Ha egyezik akkor elsőre volt itt, de mivel bejutott már tudja is a jelszó, tehát egy update-el a jelszavát visszaírhatod most már md5-el tárolva.
    (ha nem lép be, akkor megmarad a 8 karakteres tartalom, ezt bármikor újra kiküldheted, vagy akár törölheted ez alapján a rekordot)

    Lehet kombinálni, hogy pl. a jelszó mező az újaknál
    *Jelszo 20110730
    (csak elférjen az md5 hosszban)
    Ekkor az elő belépés vizsgálatot a "jelszó elejére" csinálod, ha a régieket törölni akarod, akkor az a vége szerint törlöd.
    (így spórolsz egy dátum mezőt)
    Mutasd a teljes hozzászólást!
  • akik admin által kerültek be,
    (Szerintem pont erről nem volt szó a kérdésedben )


    Időnként n darab új user kerül egyszerre a userek közé...
    Így a következő körlevelet megkapják ... ezzel megspórolva a regisztrációt


    explicite, hogy admin által, valóban nem volt benne

    Azok a bekerüléskor kapják meg a levelet. Vagy az admin direktbe (pl. phpmyadmin) viszi fel az adatbázisba őket?
    Ha igen, akkor szerintem a direkt beíráskor kell egy pl. 8 (tehát kevesebb karakteres, mint az md5 kód) karakteres jelszó nekik, azt tárolni a jelszók között (ugyan ott mint később az md5-t).


    Nem direktbe, admin felületről, de ebben a pillanatban nincs levél kiküldés, csak a körlevél alkalmával. Ekkor már eleve md5-ös jelszó kerül be, ami eddig nem így volt, ezért kérdeztem, hogyan tudassam a tisztelt felhasználóval az újdonsült jelszavát.

    Nem tudom, lehet, hogy valami információt még nem mondtam ?
    Mutasd a teljes hozzászólást!
  • explicite, hogy admin által, valóban nem volt benne

    Tehát az elfogadott válasz nem az eredeti kérdésre adott válasz.

    de ebben a pillanatban nincs levél kiküldés


    És miért nincs?
    De akkor aktivizációs levél sincs, tehát djjjozsi megoldása nem jó.

    csak a körlevél alkalmával

    Akkor máris nem igaz az indoklásod "
    "egyből" jelszó
    " része.
    Megoldás lehet viszont: "
    Lehet kombinálni...
    "
    Mutasd a teljes hozzászólást!
  • Tehát az elfogadott válasz nem az eredeti kérdésre adott válasz.


    Írtam is, hogy a megvalósított verzióhoz az elfogadott áll legközelebb.

    de ebben a pillanatban nincs levél kiküldés
    És miért nincs?
    De akkor aktivizációs levél sincs, tehát djjjozsi megoldása nem jó.


    Azért nincs, mert az admin beviszi a usereket és amikor elkészül x nappal később a körlevél csak akkor van levélküldés. Tehát az aktivizáló link is akkor kerül kiküldésre - a jelszó helyett.

    Amúgy, mintha "elbeszélnénk" egymás mellett, vagy legalábbis már nehezen követem a fonalat
    Hová lyukadjunk ki ?
    Ha gondolod összefoglalom, hogy mi volt/lett a helyzet.
    Mutasd a teljes hozzászólást!
  • Írtam is, hogy a megvalósított verzióhoz az elfogadott áll legközelebb.

    Csak a kérdésedben foglaltakhoz az én válaszomhoz képest nincs benne új.
    ----

    vagy legalábbis már nehezen követem a fonalat

    Mert 2 fonal van.

    Az egyik, hogy ahogy magyarázod, hogy mire kell, annál kevésbé él az elfogadott a
    ""egyből" jelszó visszaküldés"


    Mert itt a te óhajod és djjjozsi javaslata esetén kellene egy körlevél "Aktiválási link" e-mail, utána meg ugye a generált jelszó.

    ---

    A másik fonal, amit javasoltam. (ha már utólag küldözgeted, name "egyből".

    Amikor létrehozod, akkor hagyd üresen a jelszót (mivel az általam javasoltat úgy se tölti fel az admin.

    Amikor megy a "körlevél", akkor csak az üreseknek küld ki.
    Generálj nekik egy jelszót, és a táblába a "jelszó" mezőbe írd be pl.
    "*".$generatjelszó."*".date('YmdHis')

    Így ebbál bármikor újra el tudod küldeni a generált jelszót, hiszen még nincs kódolva.

    Amikor valaki bejelentkezik, akkor lekéred az adatbázisból a jelszavát.
    Ha egy megegyezik a md5(küldött jelszó) értékével, akkor egy már régi felhasználó ismét erre járt.
    Ha nem egyezik meg és az első karakter "*" az adatbázisban lévő jelszóból, akkor egy új felhasználó lehet.

    Megnézed, hogy az általa küldött jelszó megegyezik-e a "*"-ok között lévő jelszóval.
    Ha igen, akkor jó belépés, a jelszavát kódolod md5-el, és letárolod a jelszó mezőbe. (innetől ő már régi, ha akarja és lehetővé tetted, akkor módosíthatja a jelszavát)

    Ha az általa küldött nem egyezik meg a "*"-ok közöttivel, akkor sikertelen belépési kisérlet.

    ---

    Adminként a jelszó 2. "*" utáni részéből látod, mikor lett felvéve, és ha az túl régi, akkor már lehet törölni.
    ===
    Az eredmény gyakorlatilag egy pár mező összevonása. (pl. jelszó(varchar), megnemaktív("logikai"),alapjelszó(varchar)
    Mutasd a teljes hozzászólást!
  • ok, így már más a másik fonal :)

    végül is frissítve lett md5-re a jelszó mező, tehát csak innentől lehet alkalmazni, az eddigiekre csak akkor, ha visszaállítom a mentésből plain text-re.

    Viszont ebben a posztban így már világosan, az eredeti problémára válaszoltál, djjjozsi is egy megoldást adott. Most akkor, hogyan legyen: marad a pont egy olyanért ami megfelelő, de nem teljesen az eredetire ad választ, vagy csere a pontot egy olyanra, amely kásőbbi, de "pontosan" a problémára válaszolt ? (persze ha még mindig tartod, hogy a tiéd ugyanaz, mint djjjozsi-é) :)
    De mondom, mindegy nekem, hogy kinek jár a pont
    Mutasd a teljes hozzászólást!
  • Maradjon
    Mutasd a teljes hozzászólást!
  • Rendben, de mindenesetre lehetséges, hogy hamar fogadtam el a választ.

    Azért köszönöm a hozzászólásokat.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd