با توجه به بحث هایی که در دو پست قبلی آموزش هشینگ بیان شد بهتر دبدم تا یک جمع بندی کلی از موضوع داشته باشم و راهکارهایی برای این موضوع ارائه بدم.با این اوصاف بهتر دیدم تا مشکلات و خواسته هایمان را در مورد مسئله هشینگ در قالب یک کلاس بیان کنم که در برنامه هابی وب قابل استفاده باشد.
class PassHash {
// blowfish
private static $algo = '$2a';
// پارامتر ارزشی
private static $cost = '$10';
// اساسا برای استفاده داخلی
public static function unique_salt() {
return substr(sha1(mt_rand()),0,22);
}
//این مورد برای تولید مقدار هش استفاده میشود
public static function hash($password) {
return crypt($password,
self::$algo .
self::$cost .
'$' . self::unique_salt());
}
// برای مقایسه مقدار هش با پسورد وارد شده استفاده میشود
public static function check_password($hash, $password) {
$full_salt = substr($hash, 0, 29);
$new_hash = crypt($password, $full_salt);
return ($hash == $new_hash);
}
}
نحوه استفاده این کلاس در هنگام ثبت نام کاربر:
//فراخونی کلاس
require ("PassHash.php");
// خواندن اطلاعات از $_POST
// ...
//استفاده افرم ولیدیشن
// ...
// هش پسورد
$pass_hash = PassHash::hash($_POST['password']);
// همه ی موارد به جز $_POST['password'] در دیتابیس ذخیره میشود
// در عوض مقدار هش پسورد $pass_hash ذخیره میشود
// ...
پروسه لاگین کاربر با پسورد هش شد:
//استفاده از کلاس
require ("PassHash.php");
// مقدار هش شده را با پسورد وارد شده مقایسه میکنیم
if (PassHash::check_password($user['pass_hash'], $_POST['password']) {
// اگر مقدار صحیح بود اجازه دسترسی میدیم
// ...
} else {
// اگر مقدار صحیح نبود اجازه دسترسی نمیدیم
// ...
}
یک نکته در مورد قابل استفاده بودن blowfish
الگوریتم Blowfish ممکن است در تمامی سیستم ها اجرا نشود،با این وضعیت سیستم خودتون رو با این کد چک کنید:
if (CRYPT_BLOWFISH == 1) {
echo "Yes";
} else {
echo "No";
}
البته بعد از پی اچ پی ۵٫۳ دیگه نیاز نیست چندان نگران باشید.
پایان:
این روش هش کردن به اندازه کافی برای برنامه ی وب مناسب و قابل اطمینان خواهد بود،تا یادم نرفته این رو هم بگم،شما نیاز دارید تا پسورد کاربران را با استفاده از حداقل طول،ادغام کاراکترها ، اعداد و کاراکتراهای ویژه قویتر کنید.

i take a fancy choose it آموزش هشینگ-قسمت پایانی | PHPDevelopers.ir now im your rss reader