آنچه درمورد ایجاد محدودیت بر اساس IP باید بدانید!

ظاهرا خیلی افراد فرضهای غلطی درمورد IP کاربران اینترنت دارن، و این منجر به اشتباهات و افراطهای زیادی میشه.
تا مسئلهء تشخیص کاربران و ایجاد محدودیت و Ban کردن پیش میاد، اکثر افراد اولین چیز و بعضیا حتی آخرین چیزی که بنظرشون میرسه IP هست.
اما واقعا این درست نیست.
چرا؟
چون:

1) ممکنه همزمان بیش از یک نفر از یک IP استفاده کنن.
- بطور مثال در یک LAN یا اینترانت که همهء Node ها از یک اتصال اینترنت مشترک استفاده میکنن (یک سناریوی کاملا استاندارد و متداول)
- بطور مثال وقتی عده ای از یک پراکسی سرور استفاده میکنن (که میتونه تصادفا پیش بیاد یا بخاطر سیستم خاصی باشه).
- بطور مثال موقعی که از نرم افزارهای فیلترشکن، VPN، و Anonymizer و اینها استفاده میشه بازهم امکان استفادهء همزمان چند نفر از هر IP وجود داره.

2) یک نفر میتونه براحتی و سرعت کافی IP خودش رو عوض کنه.
- بطور مثال با دیسکانکت کردن و کانکت کردن مجدد مودم (هردوی دایالاپ و ADSL).
- بطور مثال میتونه از سایتهای پراکسی یا پراکسی سرور استفاده کنه.
- بطور مثال میتونه از فیلترشکن، VPN و Anonymizer استفاده کنه. خیلی از این نرم افزارها در هر بار اجرا یا کانکت مجدد شدن به شبکهء خودشون یک IP متفاوت دارن، و بعضی از اونا ممکنه حتی هر درخواست در یک نشست رو هم با IP متفاوتی ارسال کنن.

3) امکان استفاده از تعداد زیاد یا بسیار زیادی IP هم وجود داره.
- بطور مثال موقعی که حمله از طریق botnet انجام بشه، تعداد IP هایی که میتونن استفاده بشن (حتی بصورت همزمان) میتونه سر به فلک بزنه. قابل توجه هست که بدونید botnet های مختلفی که وجود دارن دارای از 10 هزار تا 30 میلیون bot هستند! (به جدول انتهای مقالهء ویکیپدیا مراجعه کنید).
- بطور مثال نرم افزارهایی وجود دارن که از لیست بزرگی از پراکسی سرورها برای ارسال درخواست ها استفاده میکنن و قادر هستن درخواستها رو بصورت خودکار با سرعت بالا از IP های متفاوتی ارسال کنن.

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

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

البته این داستان برای هر اکانت بود. ممکنه یاهو محدودیتی هم روی درخواستهای ارسال شده از هر IP که تلاش میکنه به اکانتهای زیادی وارد بشه داشته باشه. این چیزی هست که تست نکردم و اطلاع ندارم.

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

حداقل همیشه موارد بالا رو که گفتم مدنظر داشته باشید.

پاسخ دهید

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

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>