• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
یک نقطه ضعف در سیستمهای Login/Registration
#1
داشتم بخاطر YouTube مسخره داخل Gmail مسخره عضو میشدم که...

فکر می کنید چرا موقع Login در سیستم های Login و عضوت اگر username رو صحیح یا اشتباه بزنید و password رو اشتباه بزنید، 99% سیستمها پیام میدن که:
The username or password you entered is incorrect
یا نام کاربری یا کلمه رمز اشتباه هست
و...

طبیعتاً بخاطر ضعف برنامه نویسی یا کوتاه/خلاصه نویسی نیست درسته؟
یا هندل کردن پیامهای متعدد؟

99% بخاطر مسایل امنیتیه Idea
که خرابکار متوجه نشه که این یورز اصلاً وجود داره یا نه
درسته دیگه؟


خب یکی نیست این وسط بگه تو که در قسمت ثبت نام/registration ت امکان چک وجود اون یوزر رو گذاشتی که
myusername already exists
myusername is not available
myusername is exists
...

این شامل Gmail YAHOO AOL انجمن ها... و تمام سیستم های عضویت و login در اینترنت میشه Idea

دقت کرده بودید؟
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#2
خوب بالاخره اگر اون هم نباشه می تونن فرم ثبت نام رو سابمیت کنن و ببینن که وجود داره یا نه .
دیگه نمیشه فرم ثبت نام رو حذف کرد که . حالا اون امکان فقط سرعت اینکارو بیشتر می کنه
Facebook
EMail: Mohsen [@] EDadkhah [.] ir
  پاسخ
تشکر شده توسط :
#3
خب دیگه منظورم این حرکت دره پیت و اذیت کنندست
که کار ما کاربر عادیشون رو سخت کردن فقط
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : phpveteran
#4
نکته جالبی بود
  پاسخ
تشکر شده توسط :
#5
چک کردن ایجکسی نام کاربری در فرم ثبت نام از نظر امنیتی جالب نیست. چون این امکان رو میده که براحتی و سرعت نامهای کاربری رو چک کنن.

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

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

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

راستی شاید بتونیم چک کردن ایجکسی نام کاربری در فرم ثبت نام رو هم یجورایی محدود کنیم. یخورده نیاز به فکر و طراحی یه سیستم مخصوصی براش داره. بنظرم اگر این کار رو بکنیم بد نباشه. ولی خب کار و دردسر داره.
بهرحال اگر سیستم قفل بر اساس اکانت و IP داشته باشیم خیالمون خیلی راحتتره، ولی بازم اصولیش از نظر امنیت اینه که اگر میتونیم چک کردن ایجکسی رو هم محدود کنیم.
مثلا وقتی چند صدتا درخواست در مدت کوتاهی از یک IP برای چک کردن ایجکسی نام کاربری دریافت میشه، به احتمال زیاد دارن با روبات این کار رو انجام میدن و احتمالا باید جلوش رو گرفت! نه؟ ولی این نیاز به این داره که این تلاشها رو در دیتابیس رکورد کنیم.

درمورد اینکه چرا وقتی با فرم ثبت نام و بخصوص با امکانات ایجکسش میشه نام کاربری رو چک کرد در فرم لاگین مشخص نمیکنه که نام کاربری یا پسورد اشتباه بوده، فکر میکنم همچنان اینطوری بهتر باشه. چون هم برنامه ساده تر میشه و امنیت زیرسیستمهای مختلف اون به همدیگر وابسته نیست، و هم حداقل جلوی بعضی جوجه هکرها و افراد فضول و بعضی موارد خاص رو ممکنه بگیره. مثلا برنامه های آماده برای Brute-force که خودم تاحالا دیدم روی فرم لاگین کار میکنن و اینقدر پیچیده و مجهز نیستن که اول بیان از طریق ایجکس بخش ثبت نام سایت نامهای کاربری ثبت شده رو دربیارن و بعد از طریق فرم لاگین سعی در Brute-force اونها داشته باشن. خب این کار نیاز به برنامهء پیچیده تر و کاربر حرفه ای تر و بکارگیری پیچیده تری هم داره تا یک فرم ثبت نام که حمله کردن بهش خیلی مشخص و ساده هست و اغلب نیازی به بررسی ساختار داخلیش نیست.
قرار نیست چون یک جا نشت اطلاعاتی داریم در بخشهای دیگر هم بیخیال بشیم. بهتره نشت رو در همون جاهایی که هست محدود کنیم. اینطوری مدیریت امنیت برنامه و تغییر و اصلاحش در آینده در جهت امنیت، راحتتر و مطمئن تر میشه.
  پاسخ
تشکر شده توسط :
#6
تا اونجایی که یادم میاد bot ها جاوا اسکریپت رو هندل نمی کنن. Huh
البته میدونم باتهایی هم هستن که بتونن این کارو کنن ولی فکر نمی کنم تعدادشون زیاد باشه.
  پاسخ
تشکر شده توسط :
#7
این مسئله لزوما درمورد تمام برنامه ها و غیرممکن نیست.
میشه برنامه هایی نوشت که این کار رو هم انجام بدن. منتها حتما به پیچیدگی و هزینش صرف نمیکرده و اینقدر تارگت راحت هست که نیازی به این کارا نبوده.

دوما مثلا برای اینکه از سیستم چک کردن ایجکسی نام کاربری توسط روبات سوء استفاده کنیم اصلا نیازی به اجرای جاوااسکریپت نداره. کافیه سورس HTML و کدهای جاوااسکریپتش مقداری بررسی و تحلیل بشه (بنظرم از یک اسنیفر هم میتونیم استفاده کنیم و شاید روش ساده و سریعتری هم باشه) تا اون آدرس و فرمت درخواست نهایی و جوابش که توسط ایجکس صورت میگیره رو دربیاریم. بعد میتونیم یه برنامهء ساده و کوچک بنویسیم که درخواستها رو به اون آدرس با فرمت صحیح بفرسته و جوابها رو بخونه. کار سختی نیست. حتی منم میتونم!
اگر روبات های پیشرفته تری باشن یا ساخته بشن که امکانات آماده برای این قضیه داشته باشن دیگه کار خیلی راحتتر هم میشه و کسانی هم که نمیتونن اینطور برنامه نویسی کنن میتونن ازش استفاده کنن. یعنی آدرس فایل سمت سرور مسئول ایجکس و فرمت درخواست و اینها رو براش مشخص کنی و خودش بقیهء کارها رو انجام بده.

امنیت باید تاجاییکه میشه محکم باشه و به زمان و فرضهای بی پایه وابسته نباشه.
  پاسخ
تشکر شده توسط :
#8
در کل اگه هم فرم لاگین و هم سرور در مقابل brute force امن باشه دیگه نمی خواد خیلی نگران باشیم که اتکر میدونه چی یوزری تو سیستم ما وجود داره
  پاسخ
تشکر شده توسط :
#9
خب اصولاً username يه اطلاعات رو رفته محسوب ميشه ! پس دلسل اينکه در هنگاه لاگين اون خطا رو ميده مسخره است !
شما اگه آدرست ايميلت رو بدي مثلاً myname@gmail.com علاناً ميگي يوزرمن myname هست !

پس علناً اين اطلاعات لو رفته ديگه پس چه لوزمي داره بپيچونيمش!
  پاسخ
تشکر شده توسط :
#10
من خودم دارم روی این تحقیق می کنم که تمام سیستم های لاگین بر اساس شماره ملی/social number بشه چطور میشه...
مثلاً یه تکس باکس 15 کاراکتری(برای طویل ترین sn ها) و یک تک باکس رمز
دیگه کاربر هیچوقت یوزرشو فراموش نمی کنه، و نه یوزر های دره پیت ساخته میشه(2010 2011 2012 نقطه خط فاصله و...) و نه لو میره به این راحتیا
خیلی تمیز و ساده
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Reza


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان