آموزش ساخت کلمه عبور تصادفی با امنیت بالا در php

1396/10/2 علیرضا حاتمی نیا 415

سلام. با آموزش ویژه وبسایت ilikephp در خدمت شما هستم. امروز به آموزش نحوه ساخت کلمه عبور تصادفی در php می پردازیم. این کلمه عبور قرار است توسط سیستم به کاربر پیشنهاد شود و کلمه ایست که به صورت رندم یا تصادفی ایجاد می شود و دارای ویژگی های زیر است.

ویژگی های کلمه عبور تصادفی :

  • دارای 8 کاراکتر می باشد
  • شامل اعداد، حروف کوچک، حروف بزرگ و کاراکترهای خاص می باشد
  • شامل حداقل یک عدد، یک حرف کوچک و یک حرف بزرگ می باشد

قدم اول : تعیین کاراکتر های مجاز مورد استفاده در کلمه عبور


ابتدا 4 متغیر با نام lower,upper,digit,sp برای تعیین حروف کوچک،حروف بزرگ،اعداد و کاراکترهای خاص ایجاد و مقدارهای تعیین شده را با استفاده از تابع range به صورت آرایه به آنها نسبت می دهیم. سپس توسط متد array_merge همه آرایه ها را به یک آرایه تبدیل می کنیم :

$lower = range('a','z');
$upper = range('A','Z');
$digit = range(0,9);
$sp = ['!','@','#','$','%','^','&','*'];
$total = array_merge($lower,$upper,$digit,$sp);

قدم دوم : تعیین حداقل یک عدد،یک حرف کوچک و یک حرف بزرگ

حداقل یک کاراکتر به صورت رندم از هر یک از متغیرهای lower,upper,digit جدا کرده و به صورت رشته در متغیر pass ذخیره می کنیم:

$pass = $lower[rand(0,25)] . $upper[rand(0,25)] . $digit[rand(0,9)];

قدم سوم: تعیین 5 کاراکتر تصادفی دیگر

 از متغیر total که در مجموع 69 کاراکتر دارد با استفاده از حلقه for 5 کاراکتر به صورت رندم انتخاب و به سه کاراکتر متغیر pass می چسبانیم:

for ($i=0;$i<5;$i++) {
    $pass .= $total[rand(0,69)];
}

قدم چهارم: تغییر جایگاه کاراکترها به صورت تصادفی

 حال با استفاده از تابع shuffle کل کاراکترهای تصادفی ایجاد شده را به هم مخلوط کرده و رشته تصادفی جدیدی می سازیم. توجه داشته باشید که با این کار جایگاه سه کاراکتر اول که در قدم دوم ساخته شده اند به صورت تصادفی نیز تغییر می کند. 
نکته دیگری که باید به آن توجه داشته باشید این است که تابع shuffle یک پارامتر به صورت ورودی دریافت می کند. پس رشته pass را ابتدا توسط تابع str_split به آرایه تبدیل می کنیم و  در نهایت توسط تابع implode به رشته تبدیل می کنیم.

 

$a = str_split($pass);
shuffle($a);
var_dump(implode("",$a));

 

کلمات کلیدی

علیرضا حاتمی نیا
طراح و برنامه نویس وب
طراحی وبسایت های واکنش گرا
طراحی و پیاده سازی سیستم مدیریت محتوا
سئو و بهینه سازی سایت