پنج شنبه, 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

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

نوشتن دیدگاه


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

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

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

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

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

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

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

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

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

ورود

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

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

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

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

در این آموزش تصویری که اختصاصی بهگذر میباشد و در هیچ کجای وب آن را نخواهید یافت شما را با نحوه بازیابی اس ام اس های حذف شده در آندروید آشنا میکنیم.

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

با ما همراه باشید.

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

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

پشتیبان گرفتن و بازیابی کردن اس ام اس ها و مخاطبین در ویندوز فون 8

بازیابی کردن اس ام اس ها (پیامک ها) و مخاطبین روی کارت حافظه SD همیشه یکی از دغدغه های کاربران ویندوز فون بوده است. تنظیمات ویندوز فون اجازه پشتیبان گیری و بازیابی اس ام اس ها (پیامک ها) بر روی فضای ابری (cloud) را می دهد اما ویندوز فون به صورت پیش فرض قابلیتی ندارد که بوسیله آن بتوانیم از اس ام اس ها (پیامک ها) و مخاطبین گوشی بر روی کارت حافظه SD فایل پشتیبان بگیریم و در مواقع لزوم آن فایل را بازیابی کنیم. اما در این آموزش به شما نرم افزاری را معرفی می کنیم که بوسیله آن می توانیم اس ام اس ها (پیامک ها) و مخاطبین گوشی را بر روی کارت حافظه SD پشتیبان گیری و همچین از روی آن بازیابی کنیم. توجه کنید که بازیابی کردن اس ام اس ها و مخاطبین نرم افزار بدون اینکه قبلا از آنها فایل پشتیبان تهیه نکرده باشید امکان پذیر نیست.

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

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