پنج شنبه, 16 ارديبهشت 1395 22:36

ایمن ترین روش های رمزگذاری گذرواژه (کلمه عبور) در PHP

نوشته شده توسط
این مورد را ارزیابی کنید
(1 رای)

نکته ها و ترفندهای برنامه نویسی

امنیت اطلاعات حساس از قبیل کلمه عبور کاربران موضوعی است که همیشه و در هر زبان برنامه نویسی مورد بحث قرار گرفته و وقتی به دنیای اینترنت می رسیم این مسئله تحت موضوع امنیت اینترنت مطرح می شود. هر زبان برنامه نویسی برای تضمین کردن ایمنی و امنیت از الگوریتم های خاص خودش استفاده می کند. در PHP نیز برای حفاظت در برابر آسیب پذیری گزینه های گوناگونی از مبتدی گرفته تا پیشرفته پیش رو داریم.

اگر بخواهید درباره محافظت یک وبسایت در برابر SQL Injection اطلاعاتی پیدا کنید احتمالا با یک جستجوی ساده در اینترنت مطالب زیادی خواهید یافت اما درباره روش های ایمنی محافظت از کلمه عبور محتوای کمتری در اینترنت وجود دارد. در این مطلب تلاش می کنیم تا متداول ترین روش های محافظت از کلمه عبور در PHP را برای شما توضیح دهیم.

PHP الگوریتم های مختلفی دارد که ما را قادر می سازند تا بتوانیم کلمه عبور اصلی را مخفی کنیم و با استفاده از تکنیک های رمزگذاری بیشترین امنیت را فراهم آوریم. روش های رمزگذاری کلمه عبور در میان توسعه دهندگان زیاد محبوب نیستند چون این روش ها به اصطلاح برگشت پذیر هستند و می توان پسوورد رمزگذاری شده را رمزگشایی کرد. به همین منظور می بایست از روش های برگشت ناپذیر رمزگذاری استفاده کرد در ادامه با چند روش آشنا می شویم.

 

Hash کردن یا درهم سازی کلمه عبور

مفهوم Hash یا درهم سازی خیلی به اثر انگشت شباهت دارد. درست همانند اثرانگشت که برای هر انسانی یکتا است، Hash هم برای هر کلمه عبوری یکتا است بطوری که می توانیم آن را اثرانگشت دیجیتالی بنامیم و مهم تر آنکه یک فرایند یک طرفه است. متدلوژی Hash (درهم سازی) بعنوان یکی از ایمن ترین تکنیک ها برای محفوظ نگه داشتن کلمه عبور در نظر گرفته می شود.

الگوریتم درهم سازی باید پیش از وارد کردن داده در پایگاه داده به کار برده شود. به این صورت، چنانچه پایگاه داده مورد تهاجم هکر ها قرار بگیرد، آنها نمی توانند به کلمه عبور اصلی دست پیدا کنند و تنها با یک عبارت Hash شده مواجه می شوند. در این مرحله توجه به این نکته ضروری است که Hash کردن صرفا از کلمه عبور درون انبار داده محافظت می کند و هیچ تضمینی نیست که هکرها با استفاده از کدهای مخرب پیش از یا حین انجام درهم سازی به کلمه عبور اصلی دست پیدا نکنند.

متدوال ترین توابع Hash (درهم سازی) عبارتند از:

 

md5()

مثال زیر نحوه Hash کردن یک رشته متن را با استفاده از تابع md5 نشان می دهد.

 

<?php
$str = "PHP";
echo md5($str);//it will dsplay encrypted output of $str
?> 

خروجی اسکریپت بالا به صورت زیر است:

2fec392304a5c23ac138da22847f9b7c

 

sha1()

مثال زیر نحوه Hash کردن یک رشته متن را با استفاده از تابع sha1 نشان می دهد.

<?php
$str = "PHP";
echo sha1($str);//it will dsplay encrypted output of $str
?> 

خروجی اسکریپت بالا به صورت زیر است:

47425e4490d1548713efea3b8a6f5d778e4b1766

 

Salt یا نمک

salt در رمزنگاری یک داده تصادفی است که مانند نمک به داده اصلی اضافه می شود و کرک کردن داده hash شده را سخت تر می کند. اضافه کردن salt باعث می شود تا استخراج کلمه عبور غیرممکن شود.

مثال زیر نحوه Hash کردن یک رشته متن را با استفاده از تابع md5 و همچنین یک رشته متن تصادفی بعنوان salt نشان می دهد.

<?php
$password = 'swordfish';
$salt = 'something random';
$hash = md5($salt . $password); // Value: db4968a3db5f6ed2f60073c747bb4fb5
echo $hash;
?> 

خروجی اسکریپت بالا به صورت زیر است:

 

db4968a3db5f6ed2f60073c747bb4fb5

 

Crypt()

تابع crypt اساساً یک رابط hash (درهم سازی) یک طرفه است و از آن برای گرفتن یک رشته متن hash شده استفاده می کنیم. این تابع همچنین یک ورودی دیگر را بعنوان salt می گیرد که البته اختیاری است اما بدون آن یک کلمه عبور ضعیف تولید می شود. این تابع از الگوریتم های md5، Blowfish و DES استفاده می کند. سرعت اجرای این تابع بسته به نوع سیستم عامل متفاوت است. برای اطلاع بیشتر از نحوه کار کردن با تابع crypt() می توانید به مستندات آن مراجعه کنید.

 

Password_hash()

تابع password_hash() بوسیله الگوریتم hash یک طرفه، یک رشته متن جدید hash شده می سازد. تابع password_hash() یکی از قوی ترین تکنیک ها برای ساخت کلمه عبور امن است.

مثال زیر نحوه Hash کردن رشته متن "php" را با استفاده از تابع password_hash() نشان می دهد.

<?php
echo password_hash("php", PASSWORD_DEFAULT)."\n";
?>

خروجی اسکریپت بالا به صورت زیر است:

$2y$10$NSjtgWRZJ/IOoaFwiYEEIu.5/3YBpFgQAghqTKCATx9luYRNSVlu2

همچنین با استفاده از تابع password_verify() می توانید بررسی کنید که آیا کلمه عبور وارد شده توسط کاربر با مقدار hash شده مطابقت دارد یا نه. به مثال زیر دقت کنید.

<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $hash)) {
           echo 'Password is valid!';
} else {
           echo 'Invalid password.';
}
?>

خروجی اسکریپت بالا به صورت زیر است:

Password is valid!

 

خب در این مطلب به متداول ترین توابعی که از آنها برای hash کردن یا درهم سازی رشته متن ها استفاده می شود پرداختیم. این توابع به شما کمک می کنند تا کلمه عبور ها را ایمن تر و امن تر ذخیره سازی کنید.

 

همچنین بخوانید


کار کردن با رشته متن ها در PHP

تابع substr در PHP

تابع substr_replace در PHP

آموزش کار با پروتکل FTP در PHP

اعتبارسنجی داده ها در PHP

پردازش داده های Web Component در PHP به وسیله PrimeElements

ایمن ترین روش های رمزگذاری گذرواژه (کلمه عبور) در PHP

بازدید 2796 بار آخرین ویرایش در پنج شنبه, 16 ارديبهشت 1395 22:38

اضافه کردن نظر


کد امنیتی
تازه سازی

جدیدترین های آندروید

جدیدترین های آموزش زبان فرانسوی

جدیدترین های آموزش زبان انگلیسی

جدیدترین های صوتی

جدیدترین های ویندوزفون

جدیدترین های الگوریتم

جدیدترین های آموزش PHP

جدیدترین های پیامک

ورود

رضایت از بهگذر را به گوش گوگل برسانید
Web Analytics

بیشتر بخوانید

غیر فعال کردن Auto adjust screen tone در Galaxy S4

یک تنظیم ساده می تواند روشنایی بیشتری را هنگام مطالعه اسناد و صفحات وب روی گوشی Galaxy S4 برای شما به ارمغان بیاورد.

صفحه نمایش Full HD SuperAMOLED گالاکسی اس 4 بهترین نمایشگر AMOLED است که بر روی یک اسمارتفون دیده ایم. با این حال چنانچه توجه کرده باشید گزینه ای به نام "Display Settings" وجود دارد که شاید بخواهید نگاهی به آن بیندازید.

گزینه ی "Auto adjust display tone" بطور پیش فرض بر روی Galaxy S4 و سایر دستگاه های سامسونگ روشن (تیک خورده) است. این گزینه را می توانید در مسیر زیر پیدا کنید.

بیشتر بخوانید

بیشتر بخوانید

Window Phone 8 Internet Explorer 

در این نوشتار نحوه ی فعال سازی اینترنت جی پی آر اس gprs سیم کارت های همراه اول، ایرانسل و 3G رایتل را در گوشی های موبایل مجهز به سیستم عامل ویندو فون 8 و به صورت تصویری آموزش می دهیم.  گوشی که در این آموزش از آن استفاده کردیم مدل Lumia 520 از شرکت نوکیا دارای نسخه Windows Phone 8 بود. البته اگر شما گوشی دیگری از این خانواده را در اختیار دارید نگران نشوید. روند فعال سازی در همه ی نسخه های ویندوز فون 8 تقریبا یکسان است.

بیشتر بخوانید

رضایت از بهگذر را به گوش گوگل برسانید