فرمتهای متنی در دروپال، پردازشها و فیلترهایی هستند که قبل از نمایش متنها بر روی آنها اجرا میشوند. فیلترهایی نظیر “نمایش هر HTML بصورت متن ساده” و یا “محدود کردن تگ های مجاز HTML” محدودیتهایی بر روی متن وارد شده توسط کاربر اعمال میکند. در صورت پیکربندی نامناسب فرمتهای متنی، ممکن است نرمافزار در معرض حملاتی نظیر حملات XSS قرار گیرد.
۲- سطح دسترسی فایل سیستم
PHP برای انجام عملیات مربوط به فایلها نیازمند دسترسی کافی به فایلسیستم است. در صورتی که این دسترسی درست پیکربندی نشده باشد، ممکن است منجر به مشکلات امنیتی شدیدی شود. همچنین PHP و Apache میتوانند به روشهای گوناگون همراه یکدیگر پیکربندی شوند. نحوهی پیکربندی PHP و Apache بر نحوهی صحیح پیکربندی فایل سیستم تاثیر میگذارد. یکی از بهترین پیکربندیها انتخاب suPhp به عنوان PHP handler و سطح دسترسی ۷۵۵ برای دایرکتوریها و ۶۴۴ برای فایلها میباشد.
find /path/to/base/dir -type d -exec chmod 755 {} \;
find /path/to/base/dir -type f -exec chmod 644 {} \;
۳- کنترل نمایش خطاهای سیستم
خطاهای برنامه شامل اطلاعاتی در مورد آنچه درون برنامه میگذرد میباشند. این اطلاعات به منظور شناسایی مشکلات نرمافزار هنگام توسعه برای برنامهنویس مفید میباشند. اما بعد از اتمام فاز توسعه دیگر لزومی به نمایش آنها به کاربران نیست. گاهی اطلاعات موجود در پیامهای خطا محرمانه هستند و راه نفوذ به نرم افزار را هموار میکنند. در این مورد باید تنظیمات سرور و همچنین دروپال را مرور و از نمایش خطاهای برنامه به کاربر جلوگیری نمود.
۴- کنترل فایلهای بارگذاری شده روی سایت
دروپال به امنیت مربوط به فایلهای بارگذاری شده توسط کاربران توجه میکند. در صورتی که باید دسترسی به برخی فایلهای قابل دانلود به برخی کاربران داده شود، لازم است از امکان “فایلهای خصوصی” استفاده شود. همچنین پسوندهای مجاز برای بارگذاری باید به دقت تعیین شوند.
۶- خطاهای پایگاه داده
یکی از حملات معمول به نرمافزارهای تحت وب، حملات مربوط به پایگاه داده یا به اصطلاح SQL injection است. برخی اطلاعات مانند ساختار جداول پایگاهداده، نام کاربری پایگاه داده، نوع و نسخه آن مواردی هستند که در صورت بروز خطا در Query های پایگاهداده به کاربر نمایش داده خواهند شد. هکرها به منظور تشخیص آسیبپذیری سیستم و طراحی حملات را به این اطلاعات نیاز دارند.
۷- تلاشهای نا موفق برای ورود به سایت
روباتها از طریق ارسال پشتسرهم فرم لاگین تلاش میکنند نام کاربری و رمز عبور کاربران سایت را کشف کنند. دروپال برای مقابله با این حمله موسوم به brute-force login attack راهکارهایی دارد. در گام اول هر فرم به وسیله CSRF حفاظت میشود. لذا روبات برای ارسال هر فرم باید یک توکن CSRF جدید از سرور دریافت کرده و به وسیلهی آن حمله را انجام دهد، این عمل زمانگیر بوده و کارایی حمله را کاهش میدهد. در گام دوم دروپال بعد از تشخیص حمله با ۵ تلاش ناموفق، آدرس IP حمله کننده را برای مدت زمانی بلاک میکند. اطلاعات مربوط به تلاشهای ناموفق در جدول flood ذخیره میکند. ماژول Flood control اجازه کنترل متغیرهای مربوط به این سیستم را فرآهم میکند.
۸- سطوح دسترسی و نقشها
هسته دروپال و ماژولهای استفاده شده در نرمافزار سطوح دسترسی گوناگونی را به سیستم اضافه میکنند. پیکربندی نامناسب سطوج دسرسی و نقشها میتواند مشکلات امنیتی ایجاد کند. به عنوان مثال یک انتخاب اشتباه و دادن دسترسی مدیریت محتوا به کاربر عضو میتواند تمامی محتوای سایت را در معرض حذف شدن قرار دهد.
داشتن چندین نقش مدیریتی میتواند پیکربندی سطوح دسترسی را پیچیده کند.
۹- استفاده از ماژولهای امنیتی
گاهی استفاده غلط از امکانات دروپال ممکن است مشکلات امنیتی به وجود آورد. ماژول Secure Permissions با غیر فعال کردن رابط کاربری مربوط به سطوح دسترسی، امکان ایجاد مسائل امنیتی مرتبط با سطوح دسترسی را از بین میبرد. به این ترتیب تنها توسط کد نویسی و ماژولها میتوان تغییرات مربوط به سطوح دسترسی را اعمال نمود.
ماژول Security Review نیز با بررسی موارد امنیتی در نرمافزار، تنظیمات نامناسب نرمافزار را کشف میکند و چک لیستی از موارد امنیتی که باید برطرف شوند، ارائه میکند.
ماژولهای دیگری مانند Drupal Tiny-IDS نیز تلاش میکنند تلاشهای مربوط به نفوذ را تشخیص داده و مدیر سایت را مطلع کند.
۱۰- جلوگیری از فعالیت اسپمها در سایت
برای جلوگیری از ثبتنام، درج دیدگاه روی محتوای سایت و پر کردن فرمهای موجود در سایت به وسیله روباتها و اسپمرها میتوان از ماژولها مانند recaptcha و یا وب سرویسها مانند mollom استفاده کرد.
BOTCHA Spam Prevention یکی دیگر از ماژولهای مبارزه با اسپمها است که به وسیله چندین متد از سایت شما در برابر اسپمها محافظت میکند. از ویژگیهای این ماژول مخفی بودن آن از دید کاربر و عدم وابستگی آن به سرویسهای خارجی است.
۱۱- غیر فعال کردن ماژولهای غیر ایمن
ممکن است طی مراحل توسعه نرمافزار از برخی ماژولها مانند Devel استفاده شده باشد. این ماژولها به دلیل کاربرد توسعهایی که دارند، مشکلات امنیتی شدیدی را در نرمافزار ایجاد میکنند. لذا قبل از انتشار نسخه عمومی سایت، باید آنها را غیر فعال و فایلهای مربوط به آن را حذف نموند.
۱۲- اعمال به روزرسانیها
کد دروپال به اندازه کافی امن نوشته شده است و به روزرسانیهای امنیتی آن نیز بلافاصله بعد از کشف مشکلات منتشر میشود. همچنین ماژولهای مهم همچون Views و cTools از همین قاعده پیروی میکنند. لذا یکی از مهمترنی فعالیتهای امنیتی به روز نگه داشته هسته دروپال و ماژولهای مورد استفاده در نرمافزار است.
۱۳- استفاده از پروتکل https
برای صفحات ثبتنام و ورود بهتر است از پروتکل https استفاده شود. در صورتی که اطلاعات مهم و حیاتی در نرمافزار وجود دارد برای جلوگیری از حملات شنود و man-in-the-middle کل نرمافزار را بر روی بستر https ارائه کرده و به وسیله HSTS flag آدرسهای http را غیر فعال کنید.