نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

آموزش هشینگ-قسمت پایانی

پنجشنبه, ۲۱ بهمن ۱۳۸۹، ۱۱:۰۸ ب.ظ
با توجه به بحث هایی که در دو پست قبلی آموزش هشینگ بیان شد بهتر دبدم تا یک جمع بندی کلی از موضوع داشته باشم و راهکارهایی برای این موضوع ارائه بدم.با این اوصاف بهتر دیدم تا مشکلات و خواسته هایمان را در مورد مسئله هشینگ در قالب یک کلاس بیان کنم که در برنامه هابی وب قابل استفاده باشد.
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";
}
البته بعد از پی اچ پی 5.3 دیگه نیاز نیست چندان نگران باشید.
پایان:
این روش هش کردن به اندازه کافی برای برنامه ی وب مناسب و قابل اطمینان خواهد بود،تا یادم نرفته این رو هم بگم،شما نیاز دارید تا پسورد کاربران را با استفاده از حداقل طول،ادغام کاراکترها ، اعداد و کاراکتراهای ویژه قویتر کنید.

نظرات  (۱)

۲۳ بهمن ۸۹ ، ۰۷:۰۱ free software download
i take a fancy choose it آموزش هشینگ-قسمت پایانی | PHPDevelopers.ir now im your rss reader

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی