نحوه پیکربندی مناسب فایل php.ini برای افزایش امنیت
فایل php.ini
در PHP یکی از مهمترین فایلهای پیکربندی است که تأثیر زیادی بر عملکرد و امنیت برنامههای PHP دارد. با تنظیمات صحیح در این فایل میتوان از بسیاری از مشکلات امنیتی جلوگیری کرده و امنیت کلی سرور و برنامهها را افزایش داد. در این مقاله، به بررسی نکات کلیدی برای پیکربندی فایل php.ini
با هدف افزایش امنیت میپردازیم.
1. غیرفعال کردن توابع خطرناک
برخی توابع PHP به دلیل ماهیت اجرایی خود میتوانند خطرات امنیتی ایجاد کنند. توابعی مانند eval()
, exec()
, shell_exec()
, system()
و دیگر توابعی که امکان اجرای دستورات سیستمی را فراهم میکنند، باید در محیطهای ناامن یا عمومی غیرفعال شوند.
– تنظیم disable_functions
در فایل php.ini
میتوانید لیستی از توابعی که میخواهید غیرفعال شوند را مشخص کنید:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
این تنظیم باعث میشود تا حتی اگر مهاجم به نوعی کد مخرب را در برنامه شما اجرا کند، نتواند از این توابع برای دسترسی به سیستم عامل یا اجرای دستورات خطرناک استفاده کند.
2. غیرفعال کردن allow_url_fopen
و allow_url_include
تنظیمات allow_url_fopen
و allow_url_include
در PHP به شما اجازه میدهند تا فایلها و اسکریپتها را مستقیماً از طریق URL اجرا کنید. این ویژگی در مواردی که به فایلهای خارجی نیاز دارید ممکن است مفید باشد، اما خطرات امنیتی زیادی نیز دارد، زیرا مهاجمان میتوانند از آن برای تزریق اسکریپتهای مخرب استفاده کنند.
– غیرفعال کردن allow_url_fopen
و allow_url_include
برای جلوگیری از سوءاستفاده، بهتر است این تنظیمات را غیرفعال کنید:
allow_url_fopen = Off
allow_url_include = Off
این کار مانع از بارگذاری فایلهای خارجی از طریق URL میشود و سطح امنیت برنامه را افزایش میدهد.
3. محدود کردن اطلاعات خطاها
نمایش خطاها و جزئیات اشکالزدایی در محیطهای عمومی میتواند اطلاعات حساس درباره ساختار برنامه یا سرور شما را به مهاجمان بدهد. به همین دلیل، باید نمایش خطاها را در محیطهای تولیدی غیرفعال کنید.
– غیرفعال کردن نمایش خطاها (display_errors
)
در محیطهای تولیدی بهتر است نمایش خطاها را غیرفعال کرده و فقط آنها را در فایلهای لاگ ثبت کنید:
display_errors = Off
log_errors = On
error_log = /path/to/error.log
این تنظیمات به شما امکان میدهد خطاها را بهجای نمایش مستقیم به کاربر، در فایلهای لاگ ذخیره کنید و از افشای اطلاعات حساس جلوگیری کنید.
4. تنظیم محدودیتهای حافظه و زمان اجرا
محدودیتهای حافظه و زمان اجرا در PHP میتواند از اجرای اسکریپتهای مخرب یا غیرعادی که ممکن است منابع سرور را مصرف کنند، جلوگیری کند. به این ترتیب، میتوانید از حملات DoS یا اجرای بیپایان اسکریپتها جلوگیری کنید.
– محدودیت حافظه (memory_limit
)
تنظیم محدودیت حافظه میتواند بهطور موثر از مصرف بیش از حد منابع جلوگیری کند:
– محدودیت زمان اجرا (max_execution_time
)
محدودیت زمان اجرا برای اسکریپتها باید به گونهای تنظیم شود که مانع از اجرای طولانیمدت آنها شود:
5. پیکربندی مناسب open_basedir
تنظیم open_basedir
به شما اجازه میدهد که دسترسی به فایلها را به دایرکتوریهای خاصی محدود کنید. این تنظیم میتواند از دسترسی غیرمجاز به فایلهای حساس خارج از دایرکتوری برنامه جلوگیری کند.
– تنظیم open_basedir
برای محدود کردن دسترسی به دایرکتوریهای خاص میتوانید از این تنظیم استفاده کنید:
open_basedir = /var/www/html:/tmp
این تنظیمات اطمینان میدهد که اسکریپتهای PHP فقط به دایرکتوریهای مشخصشده دسترسی دارند.
6. تنظیمات session برای افزایش امنیت نشستها
امنیت نشستها (Sessions) در PHP نقش مهمی در جلوگیری از حملات مرتبط با سرقت نشست (Session Hijacking) دارد. با تنظیمات مناسب میتوان سطح امنیت نشستها را بهبود بخشید.
– تنظیم session.cookie_httponly
و session.cookie_secure
استفاده از این تنظیمات به جلوگیری از دسترسی به کوکیهای نشست از طریق جاوااسکریپت و همچنین اطمینان از ارسال کوکیها تنها از طریق HTTPS کمک میکند:
session.cookie_httponly = On
session.cookie_secure = On
– محدود کردن طول عمر نشستها
برای کاهش خطرات امنیتی، میتوانید طول عمر نشستها را محدود کنید:
session.gc_maxlifetime = 1440
7. استفاده از expose_php
برای پنهان کردن نسخه PHP
بهطور پیشفرض، PHP اطلاعات مربوط به نسخه خود را در هدر HTTP ارسال میکند. این کار میتواند برای مهاجمان که به دنبال آسیبپذیریهای خاص در نسخههای مختلف PHP هستند، مفید باشد. بهتر است این اطلاعات را پنهان کنید.
– غیرفعال کردن expose_php
با تنظیم زیر میتوانید ارسال اطلاعات مربوط به نسخه PHP را غیرفعال کنید:
8. تنظیمات file_uploads
و محدودیت حجم فایلها
اگر برنامه شما اجازه آپلود فایل را میدهد، باید تنظیمات آپلود فایل را بهدرستی پیکربندی کنید تا از آپلود فایلهای مخرب جلوگیری شود.
– غیرفعال کردن آپلود فایل در صورت نیاز نداشتن
اگر نیازی به آپلود فایل ندارید، بهتر است این قابلیت را غیرفعال کنید:
– محدود کردن حجم فایلهای آپلودی
برای جلوگیری از آپلود فایلهای بیش از حد بزرگ که میتواند منجر به مصرف منابع سرور شود، باید حجم فایلهای آپلودی را محدود کنید:
upload_max_filesize = 2M
post_max_size = 8M
9. محدودیت تعداد درخواستهای ورودی
محدود کردن تعداد ورودیها در درخواستهای POST میتواند از حملات مربوط به ارسال دادههای بیش از حد به سرور جلوگیری کند.
– تنظیم max_input_vars
این تنظیمات تعداد متغیرهای ورودی مجاز را محدود میکند:
نتیجهگیری
پیکربندی مناسب فایل php.ini
نقش مهمی در افزایش امنیت برنامههای PHP ایفا میکند. با استفاده از تنظیمات پیشنهادی مانند غیرفعال کردن توابع خطرناک، محدود کردن دسترسی فایلها، مدیریت صحیح نشستها، پیکربندی مناسب آپلود فایلها و استفاده از HTTPS میتوان از بسیاری از تهدیدات امنیتی جلوگیری کرد. این اقدامات ساده و موثر به شما کمک میکنند تا سطح امنیت برنامههای PHP خود را بهطور قابل توجهی افزایش دهید و از حملات احتمالی محافظت کنید.