کنترل Authorization بدون کنترل Authentication در وب اپلیکیشن ها

کنترل Authorization بدون کنترل Authentication در وب اپلیکیشن ها

در این پست از وبسایت پرووید در رابطه با کنترل Authorization بدون کنترل Authentication در وب اپلیکیشن ها به عنوان یکی از اشتباهات ساخت برنامه های وب صحبت خواهیم کرد.

کنترل Authorization بدون کنترل Authentication در وب اپلیکیشن ها

بذارید برای اینکه مطمئن بشیم همه مون معنی و مفهوم این دو کلمه رو می دونیم یه بار دیگه تعریفشون کنیم:

کنترل هویت کاربر (Authentication): کنترل هویت کاربر یعنی اینکه بدونیم یه شخص همون کسی هست که ما فکر می کنیم. چرا؟ چون احتمالاً یوزر نیم و پسورد درست رو وارد کرده یا اینکه به یه سوال امنیتی به درستی جواب داده.

حق دسترسی کاربر (Authorization): حق دسترسی کاربر یعنی اینکه هر کاربر به چه منابعی می تونه دسترسی داشته باشه و چه کارهایی رو میتونه انجام بده یا نده.

در واقع Authentication یعنی اینکه یه نفر کی هست و Authorization یعنی اینکه یه نفر چیکار می تونه بکنه.

حالا که این تعاریف مشخص شدند بذارید اشتباه شماره ی دوم رو با یه مثال بگیم. فرض کنید که مرورگر اطلاعات مربوط به کاربرها رو بعد از لاگ این کردنشون به این صورت داره:

{

username:'hamid',

role:'worker',

token:'123456789'

}

 

حالا فرض کنید که کاربر می خواد پسورد رو تغییر بده. خب اون این متد رو در حالت POST اجرا می کنه:

POST /changepassword/:username/:newpassword

خب کاری که شما باید انجام بدید چیه؟ اینه که اول چک کنید که این یوزر لاگ این کرده باشه و بعد اون توکن منقضی نشده باشه و بعدش پروفایل کاربر رو پیدا می کنید و نهایتاً پسوردشو عوض می کنید. پس کاری که شما کردید اینه که اول مطمئن شدید کاربر لاگ این کرده و بعد هم درخواستشو عملی کردید، یعنی پسوردشو تغییر دادید. درسته؟

متاسفانه باید بگم که این کار کاملاً اشتباهه. کاری که باید انجام بدیم اینه که مطمئن بشیم کاربری که داره درخواست تغییر پسورد میده همون کسی هست که نهایتاً پسوردش عوض میشه. نکته اینجاست که اطلاعات ذخیره شده درون مرورگر به راحتی می تونن تغییر داده بشن. یه کاربر نسبتاً کاربلد می تونه به راحتی رکورد بالا رو به این زیری تغییر بده:

{

    username:'Administrator',

role:'worker',

token:'123456789'

}

این کار رو هم فقط با استفاده از قابلیت های مرورگر می تونه انجام بده و نیاز به هیچگونه کدنویسی و … نیست. کاری که ما اینجا کردیم فقط Authentication بود. یعنی فقط مطمئن شدیم که کاربر log in کرده. حتی می تونیم کنترل کنیم که متد changepassword فقط توسط کاربرهایی قابل انجام باشه که log in کردن ولی باز اینم کافی نیست.

بسته ی آموزش ویدئویی ساخت یک Enterprise Application با ASP.NET Core MVC

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ساخت یک Enterprise Application با ASP.NET Core MVC دیدن کنید.

کاری که باید انجام بدیم Authorization هست. یعنی چی؟ یعنی اینکه کنترل کنیم کسی که درخواست تغییر پسورد داده با اون یوزر نیم ی که توی متد changepassword اومده یکی باشن (که در اینصورت کاربر می تونه پسورد رو تغییر بده) و در نهایت مطمئن باشیم که کاربر فقط می تونه پسورد خودشو عوض کنه.

لطفاً همه دقت کنن که Authorization و Authentication کنار هم خوبن. اینا عین دوتا داداشن. لطفاً جداشون نکنید. خدا رو خوش نمیاد.

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

مرتضی گیتی
بدون نظر

ارسال نظر

نظر
نام
ایمیل
وب سایت