Codecourse

İstifadəçilərin şifrələrini verilənlər bazasında necə saxlayaq?

Dərc edilib:

Deyək ki, biz saytımızda istifadəçilərə qeydiyyatdan keçməyə və sonra öz profillərinə daxil olmağa imkan verən həll hazırlamağa qərar vermişik. Bu zaman istifadəçilərin şifrələrini kənar müdaxilədən qorumaq barədə düşünmək lazımdır.

İlk öncə qeyd edim ki, istifadəçilərin şifrələrini verilənlər bazasında heç vaxt açıq şəkildə saxlamayın.

Heşlənmiş şifrə

Şifrələrin heşlənməsi - şifrləmədən fərqli olaraq, baxış keçirmədən şifrələrin mühafizəsi üçün istifadə olunan geri döndərilməsi mümkün olmayan prosedurdur. O, deşifrə edilməsi qeyri-mümkün olan müəyyən uzunluqda olan sətir geri qaytarır.

Şifrələrin heşlənməsi istifadəçilərin şifrəsini qəbul edən bir həll hazırlayarkən riayət etməli olduğumuz ən əsas təhlükəsizlik elementlərindən biridir. Məsələn, verilənlər bazasına kənar müdaxilə edilə bilər. Əgər veb tərtibatçı şifrələrin heşlənməsini etməyibsə, yəni şifrələr verilənlər bazasında açıq şəkildə saxlanılırsa, bu, müxtəlif xidmətlər üçün eyni şifrədən istifadə edən istifadəçilər üçün çox böyük təhlükə yaradır.

Şifrələrin heşlənməsi zamanı iki mühüm məqam var: alqoritmin mürəkkəbliyi və kriptoqrafik "duz". Heşləmə alqoritminin hesablama mürəkkəbliyi nə qədər yüksəkdirsə, ona "kobud qüvvə metodu" (avtomatik generasiya olunan simvollar ardıcıllığından istifadə edən heşləndirilmiş şifrələrin ələ keçirilməsi üçün kompüter sistemlərində şifrələrin seçilməsi üsulu) ilə müdaxilə üçün daha çox vaxt tələb olunur.

Kriptoqrafik "duz" nədir?

Sadə dillə desək, kriptoqrafik "duz", heşlərə müdaxiləni daha da çətinləşdirən əlavə məlumat hissəsidir. Əvvəlcədən hesablanmış heşlərin geniş siyahısını təqdim edən bir çox onlayn xidmətlər mövcuddur. "Duz"dan istifadə heşi belə bir siyahıda axtarmağı demək olar ki mümkünsüz edir.

Password_hash funksiyasının köməyilə şifrənin heşlənməsi

PHP 5.5-də password_hash funksiyası təqdim edilib. Bu funksiya ikinci parametr kimi başlanğıc ayar olaraq güclü alqoritm olan BCrypt-dən istifadə edir. password_hash funksiyasından istifadə etdikdə geri qaytarılan qiymət yaradılmış heşin bir hissəsi kimi artıq kriptoqrafik "duz"a malik olur.

kriptoqrafik duz

Aşağıda password_hash funksiyasının köməyilə şifrəni heşləyirik:

<?php
$password = 'mMe58C%$LM';
$hash = password_hash($password, PASSWORD_DEFAULT);
?>

İstifadəçi tərəfindən daxil edilən şifrəni verilənlər bazasında saxlanılan heşlə yoxlamaq üçün password_verify funksiyasından istifadə edilir. Bu funksiya birinci parametr kimi şifrə, ikinci parametr kimi isə heşi qəbul edir, yoxlamanın nəticəsindən asılı olaraq TRUE və ya FALSE geri qaytarır.

<?php
$password = 'mMe58C%$LM';
$hash = password_hash($password, PASSWORD_DEFAULT);

if(password_verify($password, $hash))
{
  echo 'Daxil edilmiş şifrə uyğun gəlir.';
}
else
{
  echo 'Daxil edilmiş şifrə uyğun gəlmir.';
}
?>

Şərhlər: