tgoop.com/djangolearn_ir/1118
Create:
Last Update:
Last Update:
🛡️ محافظت از فرم لاگین با Django-Defender
حملات brute-force 🔐 یکی از رایج ترین روشهای نفوذ به وبسایت ها هستند
جایی که هکرا با تلاشهای مکرر سعی میکنن رمز عبور کاربران را حدس بزنند.
کتابخانهی Django-Defender ⚡ ابزاری سبک، سریع و مطمئن برای مقابله با این حملات در پروژههای Django است.
✨ امکانات کلیدی
🚫 شمارش تلاشهای ناموفق ورود و بلاک کردن کاربر یا ip
⚡ استفاده از کش (Redis یا Memcached) برای عملکرد سریع
⏱️ امکان تنظیم تعداد تلاشهای مجاز و زمان بلاک (cool-off)
📊 ذخیره لاگها و مشاهده آنها در پنل مدیریت Django
🔐 بلاک بر اساس ip یا ترکیب یوزرنیم + ip
⚙️ نصب و راهاندازی
pip install django-defender
در settings.py تنظیمات پایه رو برای کانفیگ django defender اضافه کنید:
INSTALLED_APPS = [
...,
"defender",
]
MIDDLEWARE = [
...,
"defender.middleware.FailedLoginMiddleware",
]
تنظیمات اصلی:
DEFENDER_REDIS_URL = "redis://127.0.0.1:6379/0"
DEFENDER_LOGIN_FAILURE_LIMIT = 5
DEFENDER_COOLOFF_TIME = 300
DEFENDER_LOCK_OUT_BY_COMBINATION_USER_AND_IP = True
DEFENDER_STORE_FAILURES = True
1⃣ DEFENDER_REDIS_URL :
مشخص میکنه داده های تلاش نا موفق کجا ذخیره میشن "redis://127.0.0.1:6379/0" یعنی Redis روی لوکال با پورت 6379 ودیتابیس شماره 0 اجرا بشه.
2⃣ DEFENDER_LOGIN_FAILURE_LIMIT:
تعداد دفعاتی که یک کاربر یا ip میتونه رمز اشتباه وارد کنه قبل از اینکه بلاک شه.
مثال: مقدار ۵ → بعد از ۵ تلاش ناموفق، بلاک فعال میشه
3⃣ DEFENDER_COOLOFF_TIME :
مدت زمان بلاک به ثانیه.
به عنوان مثال اینجا ۳۰۰ ثانیه یعنی بعد از بلاک شدن؛کاربر یا ip برای ۵ دقیقه نمیتونه لاگین کنه
4⃣ DEFENDER_LOCK_OUT_BY_COMBINATION_USER_AND_IP :
تعیین میکنه که مکانیزم بلاک چگونه عمل کنه و معیار محدودسازی کاربران چی باشه. مثلا وقتی متغیر روی True تنظیم شه، بلاک بر اساس ترکیب یوزرنیم و ip اعمال میشه؛ یعنی حتی اگر کاربر از یک ip جدید وارد شه، اگر همان یوزرنیم را استفاده کنه همچنان محدود خواهد بود و اجازه ورود نداره. اگر این متغیر روی False باشه، بلاک فقط بر اساس ip اعمال میشود و یوزرنیم میتونه از ip دیگر بدون مشکل وارد شه. این تنظیم باعث افزایش دقت امنیتی و جلوگیری از دور زدن محدودیتها توسط تغییر ip میشود.
5⃣ DEFENDER_STORE_FAILURES :
اگر True باشه، تلاشهای ناموفق در دیتابیس ذخیره میشن و میتونیم اونارو را تو پنل ادمین ببینیم
این ویژگی کمک میکند تحلیل و بررسی حملات راحت تر باشد
مایگریشن ها رو اجرا کنید:
python manage.py migrate
🧪 تست عملکرد
5 بار با اطلاعات اشتباه سعی کنید داخل پروژه جنگویی خودتون لاگین کنید 🔑
پس از رسیدن به تعداد تلاشهای مجاز، دسترسی موقت بلاک خواهد شد 🚫
لاگها در پنل مدیریت ذخیره میشوند 📊
با فعال بودن LOCK_OUT_BY_COMBINATION_USER_AND_IP، حتی با IP جدید همان یوزرنیم بلاک خواهد شد 🔒
🎯 نتیجه:
اعمال چند خط تنظیمات ساده در Django-Defender، امنیت فرم لاگین پروژه شما به شکل چشمگیری افزایش مییابد. این ابزار به طور مؤثر جلوی حملات brute-force را میگیرد، تلاشهای ناموفق کاربران را ردیابی میکند و امکان مسدودسازی موقت ip یا یوزرنیم را فراهم میکند. با ذخیره لاگها در دیتابیس و بررسی آنها در پنل مدیریت، میتوانید فعالیتهای مشکوک را شناسایی کرده و امنیت کلی سایت خود را ارتقا دهید. به این ترتیب کنترل کامل بر دسترسی کاربران و حفاظت از حسابها برای شما ساده و قابل اطمینان خواهد بود ✅
✍ @Django_Experience
BY جنگولرن
Share with your friend now:
tgoop.com/djangolearn_ir/1118
