با توجه به بحث هایی که در دو پست قبلی آموزش هشینگ بیان شد بهتر دبدم تا یک جمع بندی کلی از موضوع داشته باشم و راهکارهایی برای این موضوع ارائه بدم.با این اوصاف بهتر دیدم تا مشکلات و خواسته هایمان را در مورد مسئله هشینگ در قالب یک کلاس بیان کنم که در برنامه هابی وب قابل استفاده باشد.
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