Գաղտնաբառի հեշավորումը PHP-ում
Գաղտնաբառը բաց տեսքով պահելը սխալ է։ Հաքեր-չարամիտը կարող է մուտք գործել ձեր տվյալների բազա և գողանալ գաղտնաբառերը։
Ուստի սովորաբար լոգինը պահվում է բաց
տեսքով, իսկ գաղտնաբառը հեշավորվում է հատուկ ֆունկցիայով
md5, որը պարամետրով ընդունում է
գաղտնաբառը և վերադարձնում է դրա հեշը, որից
հնարավոր չէ վերականգնել հենց այդ գաղտնաբառը։
Օրինակ, եկեք գտնենք ինչ-որ տողի հեշը.
<?php
echo md5('12345'); // կարտադրի '827ccb0eea8a706c4c34a16891f84e7b'
?>
Այժմ մեզ անհրաժեշտ է վերափոխել մեր գրանցումը և մեր լոգինը։ Սկզբից ես խորհուրդ կտայի մաքրել օգտատերերի աղյուսակը, քանի որ այնտեղ այժմ պահվում են գաղտնաբառերը բաց տեսքով, իսկ պետք է պահվեն դրանց հեշերը։ Այնուհետև թեստավորման ժամանակ գրանցումը աղյուսակը կլրացվի նոր ֆորմատով տվյալներով։
Եկեք այժմ ուղղենք մեր գրանցումը այնպես, որ նոր օգտատերին տվյալների բազայում պահելու դեպքում ավելացվի ոչ թե գաղտնաբառը, այլ դրա հեշը։
Նկարագրված ուղղումը կներկայացնի մոտավորապես հետևյալը.
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // վերափոխում ենք գաղտնաբառը դրա հեշի
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Կատարենք նմանատիպ ուղղումներ լոգինի մեջ.
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // վերափոխում ենք գաղտնաբառը դրա հեշի
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Կատարեք փոփոխություններ գրանցման մեջ՝ հաշվի առնելով հեշավորումը, գրանցեք մի քանի նոր օգտատեր, համոզվեք, որ դրանք ավելացել են տվյալների բազա հեշավորված գաղտնաբառերով։
Կատարեք փոփոխություններ լոգինի մեջ՝ հաշվի առնելով հեշավորումը, փորձեք լոգին լինել նախկինում գրանցված օգտատերերի տակ։