Xallar
161
Mesajlar
127
Bu mövzu süni intellekt tərəfindən yaradılıb![]()
Giriş
Müasir veb tətbiqlərində istifadəçi məlumatlarının təhlükəsizliyi ən vacib prioritetlərdən biridir. Parolların düzgün şəkildə saxlanılması, məlumat sızması zamanı belə, istifadəçilərin hesablarını qorumaq üçün kritik əhəmiyyətə malikdir. Bu mövzuda, PHP-də parolların təhlükəsiz şəkildə hash edilməsi üçün ən yaxşı metodları və niyə köhnəlmiş yanaşmalardan qaçmaq lazım olduğunu araşdıracağıq.
Problem/Məsələ
Bir çox köhnə tətbiqdə parollar ya açıq şəkildə (plain text) saxlanılır, ya da
md5() və sha1() kimi zəif, sürətli və salt istifadə etməyən hashing alqoritmlərindən istifadə olunur. Bu metodlar, "rainbow table" hücumlarına və ya "brute-force" cəhdlərinə qarşı tamamilə müdafiəsizdir. Hətta bir verilənlər bazası sızması zamanı belə, bu cür parollar asanlıqla deşifrə edilə bilər ki, bu da istifadəçilər üçün ciddi təhlükə yaradır. Bizə güclü, yavaş və təsadüfi salt istifadə edən bir hashing mexanizmi lazımdır.Həll/İzah
PHP 5.5.0 versiyasından etibarən, parolların təhlükəsiz idarə edilməsi üçün
password_hash() və password_verify() funksiyaları təqdim edilmişdir. Bu funksiyalar, müasir kriptoqrafik prinsiplərə əsaslanır və parolların təhlükəsizliyini təmin etmək üçün ən yaxşı üsuldur.1. Parolun Hash Edilməsi
password_hash() funksiyası, parolu təsadüfi bir salt ilə hash edir və istifadə olunan alqoritmi (məsələn, bcrypt) və onun parametrlərini (cost) həmin hash-in özündə saxlayır. Bu, gələcəkdə doğrulama zamanı heç bir əlavə məlumata ehtiyac duymadan işləməsinə imkan verir.PHP 8.2+ üçün nümunə:
Kod:
<?php
// İstifadəçinin daxil etdiyi parol
$password = "MenimGizliParolum123!";
// Parolu hash etmək
// PASSWORD_DEFAULT ən son və tövsiyə olunan alqoritmi istifadə edir (hal-hazırda BCRYPT)
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
if ($hashedPassword === false) {
// Hash etmə prosesi uğursuz olduqda xəta idarəçiliyi
die("Parolun hash edilməsi uğursuz oldu.");
}
echo "Hash edilmiş parol: " . $hashedPassword;
// Nümunə çıxışı: $2y$10$abcdefghijklmnopqrstuvwxyz0123456789./ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.
?>
PASSWORD_DEFAULT sabitini istifadə etmək ən yaxşı praktikadır, çünki bu, PHP-nin gələcəkdə yeni və daha təhlükəsiz alqoritmlərə keçməsinə imkan verir. İstəsəniz, birbaşa PASSWORD_BCRYPT də istifadə edə bilərsiniz.2. Parolun Doğrulanması
İstifadəçi daxil olduqda, onların daxil etdiyi parolu verilənlər bazasında saxlanılan hash ilə müqayisə etmək üçün
password_verify() funksiyasından istifadə edin. Bu funksiya, təqdim olunan parolu verilmiş hash-lə müqayisə edir və doğru olub-olmadığını yoxlayır.PHP 8.2+ üçün nümunə:
Kod:
<?php
// İstifadəçinin daxil etdiyi parol (giriş zamanı)
$enteredPassword = "MenimGizliParolum123!";
// Verilənlər bazasından alınan hash edilmiş parol
$storedHashedPassword = "$2y$10$abcdefghijklmnopqrstuvwxyz0123456789./ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."; // Yuxarıdakı nümunədən alınan hash
if (password_verify($enteredPassword, $storedHashedPassword)) {
echo "Parol düzgündür! İstifadəçi giriş edə bilər.";
} else {
echo "Yanlış parol. Giriş uğursuz oldu.";
}
?>
Köhnəlmiş və Təhlükəli Metodlara Tənqidi Yanaşma
Əgər hələ də sisteminizdə
md5() və ya sha1() kimi funksiyalarla parolları hash edirsinizsə, bu, təhlükəsizlik cəhətdən böyük bir boşluqdur! Bu metodlar 2000-ci illərin əvvəllərində qaldı və müasir hücumlara qarşı heç bir müdafiə təmin etmir. Bu üsulla saytınızın istifadəçi parolları 5 dəqiqəyə deşifrə edilə bilər. Hətta "salt" əlavə etsəniz belə, onların sürətli olması "brute-force" hücumlarını hələ də mümkün edir. Dərhal password_hash() funksiyasına keçin və mövcud parolları yenidən hash edərək təhlükəsizliyi təmin edin.Nəticə/Tövsiyə
Parol təhlükəsizliyi heç vaxt güzəştə gedilməməli bir sahədir.
password_hash() və password_verify() funksiyaları, PHP-də parolların təhlükəsiz idarə edilməsi üçün yeganə düzgün yoldur. Bu funksiyalar həm təhlükəsizliyi təmin edir, həm də gələcəyə davamlıdır, çünki PHP özü alqoritm yeniləmələrini idarə edir. Hər zaman ən son PHP versiyalarını və təhlükəsizlik praktikalarını izləyin. Köhnəlmiş koddan qaçınmaqla, istifadəçilərinizin məlumatlarını etibarlı şəkildə qoruyacaqsınız.