| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 30.05.09 Prihlásený: 14.02.14 Príspevky: 106 Témy: 52 | Napísal maťo*: 19.07.2012 11:41 | |
|
Nazdar, mám urobenu registraciu v ktorej som si heslo ošetril cez sha1 a salt. Registracia prebehne uspesne, vsetko je v databaze tak ako som chcel ale kazde prihlasenie je neuspesne. Na skusku som nechal prihlasit len podla emailu, bez hesla a islo to. Heslo proste z tej databazy nevytiahne. Takze predpokladam, ze chyba je niekde medzi MySQL a prihlasovacim skriptom. Nizsie hadzem casti kodu, dakujem.
registracia.php
Kód: ... $salt = sha1(rand()); $heslo = sha1($heslo.$salt);
$add = "INSERT INTO uzivatelia (mail, heslo, meno) VALUES ('$mail', '$heslo', '$meno')"; ... prihlasit.php Kód: ... $mail = mysql_real_escape_string($_POST['mail']); $heslo = mysql_real_escape_string($_POST['heslo']);
$sql = "SELECT * FROM ".$tbl_name." WHERE mail ='".$mail."' and heslo='".$heslo."'"; $result = mysql_query($sql); $pocet_riadkov = mysql_num_rows($result); ...
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 19.07.2012 11:47 | |
|
Ten salt musíš vymyslieť nejako inak. Totiž pri prihlasovaní zadáš napríklad heslo 12345, sha1() odtlačok je 8cb2237d0679ca88db6464eac60da96345513964.
Ale ak sa s týmto heslom zaregistruješ, pridáš na koniec rand()om string so sha1() a to už sa zhodovať nebude.
Názorná ukážka, spusti si niekde na test tento kód:
Kód: <?php $string = "12345"; $salt = sha1(rand()); // tu vytvoríme sha-salt $sha = sha1($string); // tu sha nášho super hesla $result = $sha.$salt; // spojíme podľa tvojho postupu echo "Naše supertajné heslo: ".$string; echo "<br />SHA1 zapísaného stringu: ".$sha; echo "<br />SHA1 saltu: ".$salt; echo "<br />A výsledok: ".$result; // zdá sa ti to rovnaké? ?>
Takže pochopiteľne ti tabuľka vracia nulový počet riadkov.
Naposledy upravil killer dňa 19.07.2012 11:57, celkovo upravené 1
_________________ always is always wrong |
|
Registrovaný: 30.05.09 Prihlásený: 14.02.14 Príspevky: 106 Témy: 52 | Napísal autor témy maťo*: 19.07.2012 11:57 | |
|
Ďakujem za pripomienku, vyriesim to. Na skusku som odstranil cely $salt = sha1(rand()); a nechal som len zahashovane heslo a problem je stale rovnaky. Stale mi vypisuje 0 riadkov v databaze.
Este doplnim ze momentalne skusam na localhoste, nemoze byt problem v tom?
Naposledy upravil maťo* dňa 19.07.2012 12:00, celkovo upravené 1
|
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 19.07.2012 12:00 | |
|
pretože pri porovnávaní zadané heslo nehashuješ ale v tabuľke máš uložené zahashované heslo
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 30.05.09 Prihlásený: 14.02.14 Príspevky: 106 Témy: 52 | Napísal autor témy maťo*: 19.07.2012 12:01 | |
|
Heslo mám hashovať aj v prihlasovacom skripte? Ako som totalny zaciatocnik ale toto som este nikde nevidel. V kazdom pripade dakujem za radu, idem skusit
// Ešte raz dakujem, funguje to. Este otazka na zaver: je to zdrave riesenie?
|
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 19.07.2012 12:06 | |
|
tak logicky $heslo sa nemôže rovnať sha1($heslo).. a čo tým myslíš zdravé riešenie?
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
Registrovaný: 30.05.09 Prihlásený: 14.02.14 Príspevky: 106 Témy: 52 | Napísal autor témy maťo*: 19.07.2012 12:08 | |
|
Máš pravdu. Nejak mi zlyhala logika. Zdavym riesim som myslel ci je to standardny postup, bezproblemovy.
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 19.07.2012 12:12 | |
|
Je to jednoduché a relatívne účinné riešenie. Záleží však od toho, čo týmto prihlásením zabezpečíš a ako čo najlepšie zabezpečíš, aby prihlásený užívateľ bol ozaj ten, za koho sa vydáva - to je takmer vždy ťažšie ako overenie správnosti samotného hesla pri prihlasovaní.
Dobrá rada do budúcnosti: Píš to tak, ako keby si za každým rohom čakal užívateľa, ktorý ti bude chcieť nabúrať databázu.
_________________ always is always wrong |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|