چگونه mod_security سرور را غیرفعال کنیم؟
مقدمه
mod_security یک ماژول آپاچی (apache module) است که به محافظت از وبسایت شما در برابر حملات مختلف کمک میکند. این ماژول
برای مسدود کردن اکسپلویتهای (exploit) رایج با استفاده از عبارات باقاعده (regular expressions) و مجموعه قوانین (rule
sets) به کار میرود و در سرورهای برخی از ارائهدهندگان خدمات میزبانی به طور پیشفرض فعال است.
در مورد لاراکلاسیفایر، از آنجایی که برای عملکرد صحیح آنها نیاز به فعال بودن توابع PHP مانند exec() و
escapeshellarg() است، بسته به شرکت میزبانی وب، ممکن است لازم باشد mod_security را غیرفعال کنید تا از بروز خطاهای 403
یا فعال شدن محافظت reCAPTCHA برای فایلهای استاتیک جلوگیری شود.
از طریق سیپنل
برای غیرفعال کردن mod_security از طریق سیپنل، وارد سیپنل شوید و در بخش Security (امنیت)، روی ModSecurity کلیک کنید.

در صفحه بعد، لیستی از دامنهها و وضعیت روشن/خاموش بودن آن را مشاهده خواهید کرد. mod_security به طور پیشفرض برای تمام
سایتهای شما روشن (ON) است. برای غیرفعال کردن، روی دکمه خاموش (OFF) کلیک کنید.

از طریق فایل .htaccess
اگر به هر دلیلی قادر به غیرفعال کردن mod_security از طریق سیپنل نیستید، میتوانید این کار را با استفاده از کد زیر در
فایل اصلی .htaccess انجام دهید:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
توجه داشته باشید که mod_security ممکن است به گونهای کامپایل شده باشد که از غیرفعال شدن از طریق فایلهای .htaccess
جلوگیری کند. همچنین، شرکت میزبان میتواند اختیارات فایل .htaccess را از طریق تنظیمات AllowOverride محدود کند.
در برخی سرورها و هاستها، امکان غیرفعال کردن ModSecurity از طریق .htaccess وجود دارد، اما آگاه باشید که فقط
میتوانید آن را به طور کامل روشن یا خاموش کنید و امکان غیرفعال کردن قوانین به صورت تکی وجود ندارد.
اما یک روش خوب که امنیت سایت شما را حفظ میکند این است که آن را فقط برای URLهای خاصی غیرفعال کنید، نه برای کل سایت. شما
میتوانید URLهای مورد نظر را از طریق عبارت باقاعده (regex) در دستور <If> زیر مشخص کنید:
### DISABLE mod_security firewall
### Some rules are currently too strict and are blocking legitimate users
### We only disable it for URLs that contain the regex below
### The regex below should be placed between "m#" and "#"
### (this syntax is required when the string contains forward slashes)
<IfModule mod_security.c>
<If "%{REQUEST_URI} =~ m#/assets/#">
SecFilterEngine Off
SecFilterScanPOST Off
</If>
</IfModule>
منابع
- https://support.cpanel.net/hc/en-us/articles/1500007340982-How-to-disable-mod-security-for-a-particular-domain-using-cPanel
- https://stackoverflow.com/questions/12928360/how-can-i-disable-mod-security-in-htaccess-file
- https://stackoverflow.com/questions/23736913/php-form-post-redirects-to-403-error-page-by-litespeed-web-server