الگوریتمهای کدگذاری یا هش کردن
- بهدست: Admingfars
- دستهبندی: عمومی خبری
آشنا بودن با الگوریتمها و توابعهای هش کردن میتواند در فرایند برقراری امنیت به ما کمک کنند. هش کردن این گونه است که الگوریتمهای درون یک زبان برنامه نویسی دادههای ما را به یک سری حروف تصادفی با طول بزرگتر تبدیل میکنند اگر شما از تابع ()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 را بزنید.
بدون دیدگاه