رمزنگاری رمز عبور در Yii

در قسمت قبل تونستیم با استفاده از اطلاعاتی که در دیتابیس داریم به سایت وارد بشیم.
رمزی که ما ذخیره میکردیم بسیار ساده بود و در دیتابیس به همان شکل ذخیره میشد.
برای امنیت سایت و امنیت اطلاعات کاربر رمز عبور را باید رمز نگاری کنیم
با استفاده از متد های رمز نگاری مثل crypy یا sh1 و .. میتونیم اطلاعات را رمز کنیم.
نحوه ی ذخیره و استفاده از دیتای رمز شده را در این بخش بررسی میکنیم
ابتدا نحوه ی رمز کردن رمز عبور , هنگام ثبت کاربر : actionCreate() باید رمزی که وارد میشرو با استفاده از یک مقدار ثابت رمز کنیم
متد رمز شده در دیتابیس ذخیره میشه و هنگامی که عملیات بازیابی اطلاعات را انجام میدهیم userIdentity
رمز عبور کاربر را با همان مقدار ثابتی که رمز کردیم , رمز میکنیم و با مقداری که در دیتابیس ذخیره شده است مقایسه میکنیم.
در صورتی که برابر بود به این معنی است که کاربر رمز عبور را درست وارد کرده است.
خوب ابتدا در کنترلر site و در اکشن actionCreate() به نگاه اجمالی میکنیم

$model->attributes = $_POST['User'];

قبلا گفتیم که به وسیله ی این کد پارامتر های ارسالی شما به مدل به صورت اتومات اختصاص داده میشه
خوب ما ابتدا باید رمز عبور ارسال شده رو دریافت کنیم.
با استفاده از کد زیر ما رمز عبور ارسالی را دریافت میکنیم

$password = $_POST['User']['password'];

خوب من رمز ارسالی رو در متغییر password ریختم
حالا باید مقدار ثابتی که قراره باهاش رمزنگاریو انجام بدیم دریافت کنیم

$salt = $_POST['User']['email'];

من ایمیل ارسالی کاربر را به عنوان مقدار ثابت دریافت کردم.
توجه داشته باشین هر کاربری که ایجاد میشه رمز عبور ارسالیش با استفاده از ایمیلش رمز میشه
با تابع crypt عملیات رمز نگاری را انجام میدیم

$crypt = crypt($password, $salt);

الان ما رمز عبوری ارسالی را با مقدار ثابتمون رمز کردیم
حالا کاری که باید انجام بدیم اینه که این رمز ایجاد شدرو به مدلمون اختصاص بدیم

$model->password = $crypt;

با کد بالا ما رمز ایجاد شدرو در پسورد ریختیم و ذخیره میکنیم
. اکنون برین یه کاربر بسازین و در دیتابیس ببینین چه اتفاقی افتاده

من کاربری با ایمیل info@goyii.ir و رمز عبور ۱۲۳۴۵۶ ساختم
نتیجرو ببینین
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

خوب الان ما با نام کاربری و رمز عبوری که ساختیم اگر لاگین کنیم بهمون ارور میده
ما باید هنگامی که رمز عبور و نام کاربری رو چک میکنیم رمزنگاریو اعمال کنیم
بخش دیگه ای که باید بررسی کنیم useridentity هست
فولدر component و فایل useridentity

ما قبلا کاربر را با email , password پیدا میکردیم
حالا ابتدا ما کاربر را با ایمیل چک میکنیم
اگر کاربری وجود نداشت که ارور میدهیم
در صورتی که وجود داشت رمز عبوری که قبلا رمز کردیم را بازیابی میکنیم
بعد رمز ارسالیه کاربر را با ایمیلش رمز میکنیم
نتیجه را با چیزی که بازیابی کردیم مقایسه میکنیم
در صورتی که برابر بودند کاربر احراز هویت شده درصورتی که برابر نبودند که پیام مناسب را میدیم
کد زیر حاصل کار ماست

public function authenticate() {
$users = User::model()->findByAttributes(array('email' => $this->username));
$password = $users->password;
$salt = $users->email;
$hash = crypt($this->password, $salt);
if (!isset($users))
$this->errorCode = self::ERROR_USERNAME_INVALID;
elseif ($password !== $hash)
$this->errorCode = self::ERROR_PASSWORD_INVALID;
else
$this->errorCode = self::ERROR_NONE;
return !$this->errorCode;
}

حالا به راحتی میتونین وارد سایت شوید با امنیت رمز عبور

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *