سلام محمد قاسمی هستم و توی این پست قرار در مورد برنامه نویسی امن صحبت کنم
در این قسمت قرار هست در مورد احراز هویت امن یا (Secure Authentication) صحبتی داشته باشیم
اولین موردی که میخوام بهش اشاره کنم که باعث امن شدن احراز هویت میشه
استفاده نکردن از جاوا اسکریپت در احراز هویت است
شاید سوال زیر براتون پیش اومده باشه که
کد های جاوا اسکریپت در سورس کد نمایش داده میشوند!!!
ببینید وقتی من یه کد جاوا اسکریپت در یه فایل مینویسم هر کسی میتونه به اون کد دسترسی پیدا کنه
برای درک بهتر به مثال زیر توجه کنید :
مدیر یک سایت میخواهد به پنل ادمین وارد شود و از جاوا اسکریپت برای احراز هویت استفاده میکند :
اگر به کد سایت نگاه کنیم متوجه استفاده از جاوا اسکریپت در احراز هویت مدیر میشویم:
خب می بینید که دو ورودی از کاربر گرفته میشه و با جاوا اسکریپت بررسی میشه
در قسمت احراز هویت نام کاربری جاوا اسکریپت بررسی میکند که اگر نام کاربری برابر با عبارت 'admin' برابر بود , بررسی میکند که رمز عبور کاربر هم برابر با عبارت 'admin156465' باشد و اگر اینطور بود ادامه ی کار یعنی ساخت کوکی مدیر , پیام خوش امد مدیر , ریدایرکت به پنل و .... را انجام دهد
خب حالا هکر میتواند با بررسی کد منبع سایت به نام کاربری و رمز عبور مدیر دست پیدا کند!!
یا این که فریمورک های زیادی مانند django ,flask و... راه حلی برای احراز هویت مدیر دارند اما امیتوان از php هم برای احراز هویت کاربران استفاده کرد
زبان php کد های خود را به کاربر نشان نمی دهد و اسناد php قابل بارگیری نخواهند بود
برای همین از php برای احراز هویت , ثبت نام و .. استفاده می شود
احراز هویت با php به این صورت است که ارتباطی امن با پایگاه داده (database) برقرار میشود و ورودی های کاربر با محتوایی که در پایگاه داده وجود دارد مقایسه و عمل احراز هویت صورت میگیرد
موضوعی که اینجاست این است که
ورودی های کاربر چگونه به سند php ارسال میشوند؟؟؟
در html یک تگ فرم میتواند با متد های post یا get محتوا را از یک سند به سند php دیگر ارسال کند
این متد ها تفاوت هایی دارند :
متد get : این متد محتوا را از طریق url به سند php ارسال میکند و امنیت کمتری نسبت به متد post دارد
متد post : این متد به صورت مخفی محتوا را ارسال میکند و بدون بررسی بسته ی http نمی توان متوجه محتوا شد !
و php هم با متغیر POST_$ محتوا ی post و با GET_$ محتوای get را دریافت میکند
در پایگاه داده table ها و column ها وجود دارند که هر کدام کاربردی دارند
برای مثال table مدیر column هایی به نام pass و user دارد که مدیر انها را مشخص میکند و برای ورود مدیر از همان استفاده میشود .
برای درک بیشتر این موضوع به مثال زیر توجه کنید:
مدیر یک سایت میخواهد به پنل ادمین وارد شود و از php برای احراز هویت استفاده میکند :
خب اگه سورس را نگاه کنیم هیچ فایل یا کد جاوا اسکریپتی وجود ندارد:
خب حالا می بینید که اطلاعات با متد post به سند auth.php که با زبان php هم هست ارسال میشود
برای بررسی بیشتر کد php سایت را بررسی میکنیم:
(در حالت عادی نمیتوان php های سایت را مشاهده کرد اما چون سایت برای خودم هست برای بررسی بیشتر انرا مشاهده میکنیم)
می بینید که با متغیر post محتوای user و pass گرفته میشود و با محتوای درن پایگاه داده مقایسه میشود
متغیر DATABASE_CONTENT$ از پایگاه داده می اید و بخش اول ان [0] نام کاربری است
و بخش دوم ان [1] رمز عبور است
این بود از احراز هویت امن در برنامه نویسی
موفق و پیروز باشید