insecteaterПет, 21.06.13, 14:17 |
Намирането на хеш на парола, като за подправка се използва нейният създаден по-рано хеш, връща същия хеш Понеже това и на мен ми звучи сложно, давам примерен код с коментари на български <?php
//Имаме супер секретната парола както следва:
$Password = 'parola';
//Създаваме някаква така по-сложничка и random подправка
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
//Слагаме едни специални знаци пред подправката, за да кажем на PHP, че ще използваме blowfish
$salt = sprintf("$2a$%02d$", 10) . $salt;
//Изчисляваме си хеша на паролата
$hash = crypt($Password, $salt);
echo "В базата данни ще съхраняваме следния хеш: $hash";
//За да проверим потребителя дали е въвел правилната парола, правим следното нещо:
//Намираме хеша на паролата, като за подправка използваме хеша от базата данни
$NewHash = crypt($Password, $hash);
//Ако всичко е наред, и стария и новия хеш тябва да съвпадат
if ($NewHash == $hash) echo "<br />Password is OK";
?> |
|
zlatenaПет, 21.06.13, 22:06 |
Коя версия на php ползвате,5.3 или 5.5? |
insecteaterПет, 21.06.13, 22:49 | |
anonymousНед, 23.06.13, 18:17 |
Сега се сблъсках с още едно важно нещо.... След като човек успешно се логне в системата и реши да коментира или да извърши някакво друго действие как може да се провери дали този е човека който се е логнал успешно... ? В момента след като се логне задавам $_SESSION['login'] = $user; и проверявам if(isset($_SESSION["login"])){.... Но е доста несигурен начин.... |
programingsПон, 24.06.13, 10:44 |
Защо мислиш, че е несигурен? На този принцип работят почти всички PHP базирани системи. Проверката би била по-точна така: <?
if(isset($_SESSION['login'])
&& $_SESSION['login']==true) {
// show some info for example
}
?> |
|