اشتباهات رایج در راه اندازی سایت با دروپال (بخش دوم)

اشتباهات رایج در راه اندازی سایت با دروپال  (بخش دوم)

امنیت

به کار گیری شیوه های امنیتی صحیح، سایت دروپالی شما را از حملات هکری محافظت کند. دروپال امنیت خوبی درون خود دارد اگر به درستی از آن استفاده بشود.

بهترین شیوه

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

  • ماژول های مختلف را همیشه به روز نگه دارید. شما باید همیشه آپدیت های امنیتی را در اسرع وقت اعمال کنید در حالیکه می توانید برای اعمال آپدیت های دیگر که فقط جنبه بهبود ماژول یا رفع باگ را دارند، قدری صبر کنید. حتما در بخش اعلامیه های امنیتی سایت رسمی دروپال، ایمیل خود را ثبت کنید.
  • پسورد های قوی انتخاب کنید. پسورد های ضعیف می توانند به یک حفره امنیتی جدی برای ایجاد مشکل در سایت شما تبدیل شوند. از ماژول Password Policy برای تعیین قوانین سخت گیرانه تری برای پسورد های کاربران استفاده کنید. همین طور می توانید پسورد ها را منقضی کنید که کاربران نیاز به تغییر آن داشته باشند.
  • فایل هایی که آپلود یا ارائه می شوند را محدود کنید. نوع فایل های مجاز را تعیین و محدود کنید و این امکان را فقط به کاربران مورد اعتماد بدهید که در سایت آپلود کنند.
  • از ماژول Security Review استفاده کنید. این ماژول پیکربندی سایت دروپالی شما را بررسی و تحلیل کرده و روش هایی را برای حل مشکلات امنیتی پیشنهاد می دهد. این ماژول را فقط در نسخه آزمایشی و تحت توسعه سایت استفاده می کنیم و آن را در سایت نهایی غیر فعال کرده و از حالت نصب خارج می کنیم و فایل های آن را نیز حذف می کنیم.

محافظت در برابر حملات هکری در کدهای سفارشی

سه محور زیر در حملات به سایت معرفی شده اند:

SQL Injection

اشتباه: نوشتن کوئری های دیتابیس در کد و عدم استفاده از API دروپال.

نمونه: نوشتن چنین کوئری در کد
db_query("select * from table where id=$_GET[‘id’]");
باعث می شود که هکر با وارد کردم چنین آدرسی در مرورگر، سایت شما را مورد حمله قرار بدهد:
example.com/index.php?id=1 union select * from users;

راه حل: از لایه کار با دیتابیس دروپال استفاده کنید. (Drupal Database Abstraction Layer)

XSS یا Cross-site Scripting

اشتباه: محتوایی را به کاربر نشان بدهید که حاوی کدهای جاوا اسکریپت است که توسط کاربر دیگری در سایت وارد شده است.

نمونه: این کد

<?php echo "Your number is ". $_GET['id']; ?>

این حمله را میسر می کند:
index.php?id=<script>alert("UAAAT??");</script>

راه حل: اطلاعات ورودی توسط کاربرانی که مورد اعتماد نیستند را در زمان نمایش برای دیگران تمیز و فیلتر کنید به طوری که در آن کد جاوااسکریپت نباشد.

CSRF یا Cross-site Request Forgery

اشتباه: آدرس ها (URL) که حاوی wildcard (%) هستند و محافظت نشده اند و کدی را مستقیما در سایت تشکیل می دهند. درخواست های POST که با استفاده از HTTP از فرم ها به سایت ارسال می شوند، می توانند از هر جای دیگری به سایت ارسال شوند و لزوما به صورت که شما پیش بینی می کنید نیست.

راه حل: از Form API دروپال استفاده کنید که با قرار دادن کلید هایی در فرم ها از این گونه حملات جلوگیری می کند. اگر آدرس هایی دارید که باید محافظت بشوند، مطمئن باشید که از یک روش تایید با استفاده از form api استفاده می کنید.

کارآیی

کارایی (Performance) برای ارائه تجربه کاربری خوب، مهم و حیاتی است. اگر سایت کند باشد حتی اگر قابلیت های فوق العاده ای داشته باشدف نمی تواند بازدید کنندگان سایت را درگیر خود کند.

بهترین شیوه

اولین کاری که باید برای بهبود کارآیی سایت، بررسی و تحلیل نحوه عملکرد سایت است. وقتی این کار انجام شد باید تا جایی که می شود بهینه سازی را انجام داد و در نهایت از caching استفاده کرد.

ابزار های آنالیز عملکرد سایت:

  • ماژول Devel برای مشاهده کوئری های دیتابیس که در اجرای هر صفحه سایت اجرا می شود.
  • ابزار XHProf به صورت عمومی ابزار خوبی برای شروع است. عمل Profiling به شما برای یافتن مسائل و مشکلات کمک می کند.
  • ابزار های مشاهده کوئری های کند دیتابیس

ابزار های بهینه سازی:

معمولا موقعیت های زیر چالش های مشترکی در این زمینه هستند:

  • استفاده از query های پیچیده که زمان زیادی صرف می کند و از ایندکس نیز استفاده نشده باشد.
  • فراخوانی زیاد توابع.
  • فعال نگه داشتن ماژول هایی که استفاده نمی شوند در یک سایت دروپالی. این ماژول ها بهتر است غیر فعال شوند.
  • پیکربندی ناصحیح کرون دروپال.
  • استفاده از صفحه بندی پیش فرض ماژول views که یک کوئری اضافه COUNT را شامل می شود. از ماژول Views Litepager که صفحه بندی بدون تابع COUNT فراهم می کند، استفاده کنید.
  • استفاده از ماژول dblog یا Database Logging در دروپال. این ماژول به صورت پیش فرض در دروپال 7 فعال است. به این ترتیب خطاها به سرعت دیتابیس را پر می کنند. یک راه حل معمول استفاده از syslog به جای dblog است. ولی مسئله این است که به این صورت لاگ ها خیلی در دسترس نیستند. یک راه حل بهتر برای مشکل، حل تمام warning ها و notice های PHP است تا به این صورت حجم پیغام های هشدار که در لاگ ذخیره می شوند، کمتر شود.
  • از ماژول Fast 404 استفاده کنید که یک صفحه خطای 404 استاتیک برای تصاویر، آیکن ها، و فایل های استاتیک که موجود نیستند ارائه می کند و به این صورت از bootstrap بی مورد دروپال و مصرف بیهوده منابع سرور جلوگیری می کند.
  • تنظیمات ادغام فایل های CSS و JS در دروپال فعال نباشند.این یک مشکل است بنابراین بهتر است این تنظیمات انجام شوند.

اشتباهات مرتبط با Caching:

  • اینکه اصلا هیچ استراتژی برای کش کردن داده ها نداشته باشید، یک مشکل جدی است. اگر به اینکه چطور محتوا را برای کاربران، نقش ها، گروه ها و غیره چطور کش کنید فکر نکرده باشید، این یک اشتباه بزرگی است.
  • پاک کردن کش دروپال به صورت مکرر (Clear cache).
  • کش کردن در پایین ترین سطوح مثل کش ماژول Views به جای اینکه از کش بلوک ها و یا پنل ها استفاده کنید.
  • استفاده از کش های ساده و اولیه مثل کش بلوک ها و کش پنل ها.
  • استفاده از یک سیستم کش که خیلی پیچیده است و متناسب با نیازهای واقعی سایت نیست.

ابزارهایی که توصیه می شود:

ارسال نظر