آموزش هوش مصنوعی

الگوریتم‌های کدگذاری یا هش کردن

عمومی خبری

آشنا بودن با الگوریتم‌ها و توابع‌های هش کردن می‌تواند در فرایند برقراری امنیت به ما کمک کنند. هش کردن این گونه است که الگوریتم‌های درون یک زبان برنامه نویسی داده‌های ما را به یک سری حروف تصادفی با طول بزرگ‌تر تبدیل می‌کنند اگر شما از تابع ()hash_algos یک پرینت ساده بگیرید با تعداد زیادی از الگوریتم‌های هش کردن در PHP مواجه می‌شوید که به بررسی معروف‌ترین آن‌ها می‌پردازیم.

لازم به ذکر است استفاده از این توابع به تنهایی اصلا توصیه نمی‌شوند چون می‌توانند به راحتی کرک بشوند پس حساسیت بسیار زیادی بر روی هش کردن داشته باشید تا اگر زمانی به دست افراد سودجو افتاد نتوانند از اطلاعات شما و به‌خصوص کاربران‌ شما سوء استفاده کنند.

تابع md5:

string md5 ($string, $getRawOutput)

در کد بالا تابع ()md5 دو ورودی دریافت می‌کند که پارامتر دوم آن به صورت دلخواه است. پارامتر اول رشته‌ای که باید هش بشود را دریافت می‌کند و در پارامتر دوم یک مقدار true یا false را می‌گیرد که به طور پیش فرض false است، اگر مقدار true را به تابع بدهیم خروجی آن به صورت باینری با طول 16 می‌باشد.

تابع sha1:

string sha1($string, $getRawOutput)

تایع sha1 نیز دو پارامتر دریافت می‌کند که اولی رشته‌ای که باید هش بشود را دریافت می‌کند و دومین پارامتر، به صورت true و false مقداردهی می‌شود که مقدار پیش فرض این تابع false است و اگه مقدار true را بدهیم خروجی آن به صورت باینری با طول 20 می‌باشد.

تابع hash:

string hash($algo, $string, $getRawOutput)

همان‌طور که در بالا هم آمده است تابع hash سه تا پارامتر دارد، اولین پارامتر آن الگوریتم هش کردن رشته دریافت می‌کند که به دوتا از معروف‌‌ترین آن‌ها در بالا اشاره کردیم (md5 – sha1)، پارامتر دوم رشته‌ای که باید هش بشود را می‌گیرد و پارامتر سوم که اختیاری است که بالاتر نیز اشاره شد دو مقدار true یا false را دریافت می‌کند و به طور پیش فرض false است و اگر مقدار true را وارد کنیم تابع به عنوان خروجی رشته‌ی هش شده باینری را به عنوان خروجی بر می‌گرداند.

تابع password_hash:

یکی از بهترین گزینه‌ها برای هش کردن رمز عبور (Password)ها می‌تواند تابع password_hash باشد، مزیتی که باعث شده این تابع فعلا یکی از بهترین گزینه‌ها باشد این است که هر بار یک هش تصادفی (Random) به عنوان خروجی برمی‌گرداند که این موضوع می‌تواند از کرک کردن رمز عبور (Password)ها جلوگیری کند.

 string password_hash ( $password , $algo [, array $options ] )

پارامتر اول رمز عبور (Password)ی که باید هش بشود را دریافت می‌کند، پارامتر دوم الگوریتمی که این رمز عبور (Password) را هش می‌کند را دریافت می‌کند و دارای چهار گزینه است.

  • PASSWORD_DEFAULT
  • PASSWORD_BCRYPT
  • PASSWORD_ARGON2I
  • PASSWORD_ARGON2ID

وارد کردن پارامتر سوم نیز واجب نیست ولی می‌توانید به صورت آرایه به آن مقدار بدهید، برای مثال:

string password_hash ( "7learn" , PASSWORD_DEFAULT , ['cost' => 12 ] );

با قرار دادن cost و مقداردهی به آن به تابع وقت داده‌ایم که بیشتر روی هش کردن رمز عبور (Password) وقت بگذارد و اگر این مقدار افزایش پیدا کند  برای هش کردن چندین ثانیه زمان می‌برد.

اما مهم‌تر از آن Verify یا تایید کردن رمز عبور (Password) می‌باشد چون هر بار یک هش تصادفی به ما برمی‌گرداند شاید برای ما سوال باشد که چگونه رمز عبور (Password) را Verify کنیم؟

 bool password_verify ( $password , $hash )

با تابع password_verify می‌توانیم فرآیند تایید کردن را انجام دهیم. این تابع دو پارامتر را دریافت می‌کند که اولی رمز عبور (Password)ی است که از کاربر می‌گیریم و دومی رمز عبور (Password) هش شده‌ای است که در پایگاه داده ذخیره کرده‌ایم، اگر رمز عبور (Password) و هش مطابقت داشته باشد مقدار true را برمی‌گرداند و اگر نداشته باشد مقدار false را  برمی‌گرداند.

مشکلات ناشی از register_globals:

register_globals یک تنظیمات درون PHP است که اگر فعال باشد مقادیری که از آرایه‌های سوپر گلوبال (Superglobals) می‌آیند را با نام‌های آن‌ها متغیر می‌سازد و مقادیرشان را درون همان متغیرها می‌ریزد. برای مثال:

 

$username === $_POST['username'];

 

در مثال بالا متغیر username همان مقدار username است که از آرایه سوپر گلوبال(Superglobals) POST آمده است.

غیر فعال کردن register_globals در cpanel:

ابتدا باید وارد  سی‌پنل خود بشوید و در تب Software گزینه Select PHP Version را بزنید.

 

بدون دیدگاه

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

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

محصولات تراست
عمومی خبری
لیست 11 تا از بهترین محصولات تراست از نگاه مشتریان

بهترین محصولات تراست را می شناسید؟  میدانستید یکی از بهترین برند های تولید شده در کشوره؟ می دانید تمامی محصولات تاییدیه دانشگاه لوزان سوئیس رو داره؟ ا

عمومی خبری
نمایندگی فروش پانل گچی جی برد

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

NFT چیست و چطور کار می کند؟
عمومی خبری
NFT چیست؟ هرآنچه باید در مورد توکن غیرقابل تعویض بدانید

NFT چیست و چطور کار می کند؟ | همه چیز درباره توکن غیر قابل معاوضه ان اف تی