آموزش هشینگ-قسمت پایانی
پنجشنبه, ۲۱ بهمن ۱۳۸۹، ۱۱:۰۸ ب.ظ
با توجه به بحث هایی که در دو پست قبلی آموزش هشینگ بیان شد بهتر دبدم تا یک جمع بندی کلی از موضوع داشته باشم و راهکارهایی برای این موضوع ارائه بدم.با این اوصاف بهتر دیدم تا مشکلات و خواسته هایمان را در مورد مسئله هشینگ در قالب یک کلاس بیان کنم که در برنامه هابی وب قابل استفاده باشد.
الگوریتم Blowfish ممکن است در تمامی سیستم ها اجرا نشود،با این وضعیت سیستم خودتون رو با این کد چک کنید:
پایان:
این روش هش کردن به اندازه کافی برای برنامه ی وب مناسب و قابل اطمینان خواهد بود،تا یادم نرفته این رو هم بگم،شما نیاز دارید تا پسورد کاربران را با استفاده از حداقل طول،ادغام کاراکترها ، اعداد و کاراکتراهای ویژه قویتر کنید.
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 ذخیره میشود
// ...
//استفاده از کلاسیک نکته در مورد قابل استفاده بودن blowfish
require ("PassHash.php");// مقدار هش شده را با پسورد وارد شده مقایسه میکنیم
if (PassHash::check_password($user['pass_hash'], $_POST['password']) {
// اگر مقدار صحیح بود اجازه دسترسی میدیم
// ...
} else {
// اگر مقدار صحیح نبود اجازه دسترسی نمیدیم
// ...
}
الگوریتم Blowfish ممکن است در تمامی سیستم ها اجرا نشود،با این وضعیت سیستم خودتون رو با این کد چک کنید:
if (CRYPT_BLOWFISH == 1) {البته بعد از پی اچ پی 5.3 دیگه نیاز نیست چندان نگران باشید.
echo "Yes";
} else {
echo "No";
}
پایان:
این روش هش کردن به اندازه کافی برای برنامه ی وب مناسب و قابل اطمینان خواهد بود،تا یادم نرفته این رو هم بگم،شما نیاز دارید تا پسورد کاربران را با استفاده از حداقل طول،ادغام کاراکترها ، اعداد و کاراکتراهای ویژه قویتر کنید.
۸۹/۱۱/۲۱