Autor | Zpráva | ||
---|---|---|---|
RaZeM Profil |
#1 · Zasláno: 14. 2. 2012, 18:03:45
Dobry den, neviete co mam spravit ked chcem aby mi na email prislo zabudnute heslo vypisane ako ho zadaval uzivatel?... Mne pride v sha1
|
||
Keeehi Profil |
#2 · Zasláno: 14. 2. 2012, 18:07:54
RaZeM:
To nelze. Musí se vygenerovat nové heslo a to uživateli poslat. |
||
SeparateSK Profil |
#3 · Zasláno: 14. 2. 2012, 18:08:38
Keď ho hashujes v SHA1, a zároveň aj ukladáš, tak je jasné ,že mu príde na EMAIL heslo v SHA1.
SHA1 nieje BASE64, takže pokúsiť sa to rozšifrovávať je zbytočná strata času. Keď tak ,vyrieš to ako ja :) Na email mu pošleš link napr: blabla.sk/bla.php?meno=MENO&heslo=SHA1HESLO A bla.php ho automaticky prihlási a on si zmení heslo |
||
RaZeM Profil |
Cize teraz to mam ako spojazdnit aby to islo prihlasit uzivatelovi s tym ze zabudne heslo a posle si ho na email
Takze mu dojde link s tmy ze ked nanho kline ho automaticky prihlasi.. al emusi si zmenit heslo aby sa vedel prihlasit nabuduce :D |
||
SeparateSK Profil |
Áno, presne tak, napr v linku máš:
meno=jano heslo=6e017b5464f820a6c1bb5e9f6d711a667a80d8ea Tieto údaje doplníš do napr mysql query: <?php $q=mysql_query("SELECT * FROM uzivatelia WHERE meno=$_GET[meno] AND heslo=$_GET[heslo]"); ?> |
||
RaZeM Profil |
#6 · Zasláno: 14. 2. 2012, 18:18:42 · Upravil/a: RaZeM
pockaj lebo sa stratim.. toto mam na to zabudnute heslo teraz
if ($_GET["clanok"]=="zabudnuteheslo") { $mail = $_POST["email"]; include("config.php"); $db; mysql_select_db($dbname, $db); $vysledok = mysql_query( "SELECT * FROM uzivatelia WHERE email='$mail'", $db); while ($zaznam = mysql_fetch_array($vysledok) ){ $email = $zaznam["email"]; $heslo = $zaznam["heslo"]; $telo ="Vaše heslo je $heslo"; @mail ($email, "Zabudnuté heslo na účet", $telo); header("Location: index.php?clanok=prihlasenie"); }} teraz neviem ako mam vytvorit ten link tam aby ho to prihlasilo :D uplne som z toho domotany |
||
SeparateSK Profil |
Nejak takto :
if ($_GET["clanok"]=="zabudnuteheslo") { $mail = $_POST["email"]; include("config.php"); $db; mysql_select_db($dbname, $db); $vysledok = mysql_query( "SELECT * FROM uzivatelia WHERE email='$mail'", $db); while ($zaznam = mysql_fetch_array($vysledok) ){ $email = $zaznam["email"]; $heslo = $zaznam["heslo"]; @mail ($email, "Kliknite na tento link a potom si zmeňte heslo: http://tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo); header("Location: index.php?clanok=prihlasenie"); }} A ten by mohol vypadať takto: $mail = $_GET["mail"]; include("config.php"); $db; mysql_select_db($dbname, $db); $vysledok = mysql_query( "SELECT * FROM uzivatelia WHERE email='$mail'", $db); while ($zaznam = mysql_fetch_array($vysledok) ){ $heslo = $zaznam["heslo"]; if($heslo==$_GET[heslo]){ //Tvoje SESSIONy $_SESSION[prihlaseny]=true; //... header("Location: index.php"); } } |
||
JaySee Profil |
Dovolil bych si dodat, že tento postup nepovažuji za bezpečný.
Především ten přímý vstup do SQL požadavku bez předešlého ošetření. takže alespoň: $mail = mysql_real_escape_string($_POST["email"]); a to samé při přihlašování se skrze $_GET["heslo"]. Ale tak jako tak bych zauvažoval nad tím, že je možné se přihlásit vložením starého hashe. Měl by být vygenerován nový hash, který se pošle mailem a po jeho zadání teprve bude umožněno znovu nastavit heslo bez potvrzení starým heslem. Ten nový hash bude po čas změny hesla uložen jinde, než stávající hash. Ten se přepíše až potom, co se uživatel přihlásí přes nově generovanou sekvenci (hash) a změní heslo. |
||
RaZeM Profil |
#9 · Zasláno: 14. 2. 2012, 18:36:16 · Upravil/a: RaZeM
Riesim teraz ten prvy sposob najprv :D budem rad ak to spojazdnim.... a take ze zadat aby sa dalo prihlasit aj pomocou Sha1 sa neda? ze vlastne mu teda pride to zasifrovane heslo a on si ho skopiruje a tak s aprihlasi a potom si zmeni
No dojde mi to na email vypisane to je ale neni to ako odkaz :D neviem co som tam domotal |
||
Again Profil |
#10 · Zasláno: 14. 2. 2012, 18:54:35
Podle mě je docela bezpečnostní riziko posílat i jenom hash hesla v URL adrese. Pokud by se tato adresa dostala někomu neoprávněnému do ruky, rázem by měl hash hesla přímo z databáze a mohl by začít čarovat. Teoreticky by se tak mohl ihned přihlásit a dostat se do cizího účtu ...
Když už by to tak mělo být, alespoň bych přidal do URL adresy nějaký řetězec, který by kontroloval, jestli je to skutečný vygenerovaný odkaz ... Osobně řeším zapomenuté heslo tak, že posilám na email nové vygenerované heslo a odkaz s řetězcem pomocí kterého lze nové heslo aplikovat. Uživatel, který heslo zapomněl nemá pak žádný problém si nové heslo zaslat, ověřit pomocí odkazu a pohodlně se přihlásit, načež si následně může heslo změnit v profilu ... |
||
RaZeM Profil |
#11 · Zasláno: 14. 2. 2012, 18:57:30 · Upravil/a: RaZeM
To je pekne ale ja take nedokazem spravit nejsom az tak zdatny v php :/ :D potrebujem hlavne nieco co bude fungovat :) ..mam to na maturitu
kks neviem spravit to aby mi to hodilo link stale mi to len vypise na emaily nvm co tam zle zadavam :/ |
||
Again Profil |
#12 · Zasláno: 14. 2. 2012, 19:15:40
Vždyť to není takové složité. Napíšeš si funkci na generování hesla (to doufám zvládneš), heslo si uložíš do databáze do nějakého nového sloupce, vygeneruješ si náhodný řetězec a ten také uložíš do nějakého sloupce. Uživateli pošleš email s odkazem ve kterém bude obsaženo id uživatele a daný řetězec. Pokud uživatel na odkaz klikne bude následovat zpracování -> Porovnáš id a řetězec s údaji v databázi - vytvoříš hash nového hesla a staré heslo přepíšeš tímto hashem. Uživatel se spokojeně přihlásí a poté si bude moct změnit heslo v profilu ...
|
||
RaZeM Profil |
#13 · Zasláno: 14. 2. 2012, 19:23:41
na vygenerovanie hesla nieco mam .. ale vravim nvm ako spravit uz to aby mi na emaily ukazalo ten link aby sa na to dalo kliknut :D neje mi to stale
|
||
Again Profil |
#14 · Zasláno: 14. 2. 2012, 19:26:40
Stačí poslat odkaz v <a href=""> nebo ne? Ukáže ti to alespoň celý link se vším, co k němu patří (tím myslím to heslo a jméno)?
|
||
RaZeM Profil |
#15 · Zasláno: 14. 2. 2012, 19:29:12
ano ano vsetko ukaze ako mi tu aj aj napisali http://tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo akoze ono vsekto ukaze v tom emaily ale neni to spravene ako odkaz
|
||
Again Profil |
Pokud to dobře chápu, tak prostě je to jenom link, na který se nedá kliknout. V tom případě využij html tag:
<a href="tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo"">tvojastranka.sk/skontrolujHeslo.php?mail=".$mail."&heslo=".$heslo</a> |
||
RaZeM Profil |
#17 · Zasláno: 14. 2. 2012, 19:38:23 · Upravil/a: RaZeM
mi to na tom riadku pise chybu :D
ja som to predtym mal takto http://www.razem.mzf.cz/index.php?clanok=skontrolovatheslo&email=".$email."&heslo=".$heslo, $telo |
||
RaZeM Profil |
Uz konecne mi ide aj presmerovanie aj ma to prihlasi ale mi to neda ze som to ja uzivatel akoze nevie to najst uzivatela podla emailu akoby :D prihlasi ma pod ziadnym nickom :D cize ani profil neviem pozret posielat spravy atd :D neviete nejake rady?..takto teraz vyzera kod:
<?php $email = $_GET["email"]; include("config.php"); $db; mysql_select_db($dbname, $db); $vysledok = mysql_query( "SELECT * FROM uzivatelia WHERE email='$email'", $db); while ($zaznam = mysql_fetch_array($vysledok) ){ $heslo = $zaznam["heslo"]; if($heslo==$_GET[heslo]){ $_SESSION["id"]=true; header("Location: index.php?clanok=profil"); } } ?> |
||
Časová prodleva: 12 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0