امنیت فقط نصب یک پکیج نیست
امنیت وب مجموعهای از تصمیمهای لایهای است. تنظیمات Django، سرور، دیتابیس، مدیریت secretها، احراز هویت، مجوزها و مانیتورینگ همگی بخشی از سطح حمله هستند. قبل از انتشار باید یک چکلیست مشخص داشته باشید.
۱. DEBUG را در production غیرفعال کنید
فعال بودن حالت debug در محیط عملیاتی میتواند اطلاعاتی درباره خطا و محیط برنامه افشا کند. تنظیمات توسعه و production را از یکدیگر جدا و متناسب با محیط مدیریت کنید.
۲. Secretها را داخل کد قرار ندهید
کلیدهای رمزنگاری، رمز دیتابیس و credential سرویسهای بیرونی باید از طریق environment یا secret management امن در اختیار برنامه قرار بگیرند. قرار دادن این اطلاعات داخل repository ریسک جدی ایجاد میکند.
۳. احراز هویت با مجوز یکسان نیست
اینکه کاربر وارد سایت شده، به معنی دسترسی او به همه منابع نیست. برای هر عملیات حساس باید permission متناسب با نقش و مالکیت داده بررسی شود.
۴. CSRF و Cookieها را جدی بگیرید
در برنامههای مبتنی بر session، تنظیم درست CSRF و cookieهای امن اهمیت دارد. همچنین استفاده از HTTPS در محیط عملیاتی باید جزو طراحی پایه باشد، نه کاری که در پایان پروژه اضافه شود.
۵. ورودی کاربر را اعتبارسنجی کنید
هیچ دادهای را صرفاً چون از Frontend آمده قابل اعتماد ندانید. اعتبارسنجی باید در Backend هم انجام شود و محدودیت اندازه فایل، نوع داده و دسترسی به منابع اعمال گردد.
۶. وابستگیها را بهروز و قابل بررسی نگه دارید
کتابخانههای پروژه بخشی از سطح حمله هستند. نسخهها را کنترل کنید، dependencyهای بدون استفاده را حذف کنید و فرآیند مشخصی برای بررسی بروزرسانیهای امنیتی داشته باشید.
۷. لاگ و مانیتورینگ را فراموش نکنید
امنیت بدون مشاهدهپذیری ناقص است. ثبت رویدادهای مهم، خطاها و رفتارهای غیرعادی به تیم کمک میکند حادثه را سریعتر شناسایی و بررسی کند.
جمعبندی
امنیت Django از تنظیمات صحیح و مدل دسترسی شروع میشود و تا زیرساخت، secrets، لاگ و مانیتورینگ ادامه دارد. یک چکلیست ساده اما مستمر، بهتر از اصلاح امنیتی عجولانه درست قبل از انتشار است.