php.ini، یک فایل پیکربندی مهم است که تنظیمات PHP وب سرور در آن قرار می گیرد و برای بهبود عملکرد سایت ضروری می باشد. در برخی موارد ممکن است بخواهید تنظیمات پیش فرض فایل php.ini را برای پاسخگویی به نیازهای خاص خود تغییر دهید که از جمله آنها می توان به افزایش memory limit یا maximum execution time اشاره کرد. علاوه بر این، بدافزارها نیز می توانند بر فایل php.ini تأثیر بگذارند، به ویژه در سرورهایی که نسخههای قدیمیتر PHP را اجرا میکنند. در ادامه مقاله به بررسی تنظیمات فایل php.ini و نحوه تغییر دستورالعمل های آن برای حفاظت از وب سرور، پرداخته می شود.
تصویر(1)
فایل php.ini چیست؟
php.ini که برای مقداردهی اولیه PHP شناخته میشود، یک فایل پیکربندی مهم است و تنظیمات PHP وب سرور شما را کنترل میکند. این فایل امکان مدیریت قوانین خاص PHP مانند حداکثر حجم آپلود فایل، نمایش خطاها، memory limits و سایر ویژگی های مدیریت سرور را می دهد. به صورت پیش فرض، تنظیمات استاندارد php روی سرور اعمال شده است اما با استفاده از تنظیمات فایل php.ini می توانید مقادیر را شخصی سازی نمایید.
محل قرارگیری فایل php.ini
ممکن است محل قرارگیری فایل php.ini بر اساس تنظیمات سرور، سیستم عامل و نسخه PHP متفاوت باشد. در ادامه به بررسی مسیرهای پیش فرض و رایج فایل php.ini پرداخته می شود.
- مکان پیشفرض فایل php.ini در سیستم عامل لینوکس:
/etc/php.ini
/etc/php/X/apache2/php.ini
به جای x نسخه php خود را وارد نمایید.
- مکان پیش فرض php.ini در ویندوز:
C:\php\php.ini
C:\Windows\php.ini
تصویر(2)
- از پشتیبان شرکت هاستینگ خود کمک بگیرید: در صورت استفاده از سرویس هاست اشتراکی، ممکن است دسترسی شما به تنظیمات فایل php.ini محدود شده باشد. بنابراین، برای یافتن مکان فایل و انجام تغییرات در آن باید با پشتیبان شرکت هاستینگ خود مکاتبه نمایید. در صورت استفاده از سرویس های میهن وب هاست، می توانید یک درخواست پشتیبانی ارسال نمایید تا بررسی های لازم صورت گیرد.
نحوه تغییر تنظیمات فایل php.ini
ممکن است برای تغییر تنظیمات خاص سرور، نیاز داشته باشید تا فایل php.ini را ایجاد یا ویرایش کنید. برای این کار کافی است در فایل php.ini مقادیر مد نظر خود را قرار داده و تغییرات را ذخیره نمایید. سپس وب سرور خود را مجدد راه اندازی کنید.
در فایل php.ini چه تنظیماتی را میتوان یافت؟
برخی از تنظیمات رایج فایل php.ini به شرح زیر است:
- display_errors: این دستور تعیین میکند که خطاها به کاربر نمایش داده شوند یا پنهان گردند. معمولاً این قابلیت غیر فعال است.
- display_startup_errors: خطاهایی که در زمان راهاندازی PHP رخ میدهند، نمایش داده میشوند.
- error_reporting: این دستور، سطح گزارش خطا را تعیین می کند و می تواند با یک عدد یا عبارت تعریف گردد. در نسخه php 8، مقدار پیش فرض E_ALL می باشد.
- log_errors: این دستور تعیین میکند که پیغام خطاهای اسکریپت در سرور یا فایل error_log هاست کاربر ثبت شوند.
- max_input_time: مشخص میکند که چه مدت زمانی باید برای پردازش دادههای ورودی از فرمهای وب سایت در اسکریپتهای PHP، اختصاص یابد.
- output_buffering: تعیین میکند که output_buffering برای فایلها فعال باشد یا خیر.
- memory_limit: این دستور حداکثر حجم حافظه ای که یک اسکریپت مجاز به استفاده از آن است را مشخص خواهد کرد. این پارامتر به صورت بایت تعیین میشود.
- short_open_tag: این دستور تعیین میکند که آیا استفاده از نسخه کوتاه شده php مجاز است یا خیر. در صورت استفاده از توابع XML در PHP، این گزینه باید غیر فعال گردد.
تاثیر بدافزار روی فایل php.ini
برخی بدافزارها و حملات مخرب ممکن است توانایی تغییر تنظیمات فایل php.ini را داشته باشند، به خصوص در صورتی که تنظیمات قدیمی وب سرورها اجازه تغییر فایل php.ini در سطح سایت یا دایرکتوری را بدهند.
تصویر(3)
نحوه حفاظت از وب سرور
برای حفاظت از وب سرور، به صورت مداوم نشانه هایی که باعث وقوع حملات و تغییرات غیرمنتظره از جمله ایجاد فایلهای جدید و غیرمعتبر می شوند را بررسی کنید. شما میتوانید لایه های امنیتی مختلفی برای حفاظت از وب سرور خود پیادهسازی نمایید:
تصویر(4)
1. بروزرسانی منظم PHP و سایر نرم افزارها
همیشه سیستم عامل و نرمافزارهای سرور خود را بروز نگه دارید تا خطرات را کاهش دهید. بروزرسانی نرمافزارها یک مرحله مهم است اما به تنهایی نمی تواند امنیت کامل سرور را تضمین کند. در واقع امنیت سرور یک فرایند پیچیده است که نیازمند ترکیبی از اقدامات مختلف نظیر تغییر تنظیمات فایل php.ini می باشد.
2. نظارت بر وب سرور
تمام لاگهای وب سرور، از جمله سرویسهای شبکه، دسترسی به سایت، سرور پایگاهداده و لاگهای سیستم عامل، باید در مکانی جداگانه ذخیره شده و به طور مداوم بر آنها نظارت شود تا بتوانید ورودیهای غیرمعمولی که ممکن است نشاندهنده حملات احتمالی یا موفقیتآمیز باشند را تشخیص دهید. همچنین، هر گونه فعالیت مشکوکی که در لاگها شناسایی شود باید بلافاصله مورد بررسی قرار گیرد.
3. پیاده سازی سیستم نظارت بر یکپارچگی فایل
پیادهسازی سیستم نظارت بر یکپارچگی فایل را در نظر داشته باشید تا بتوانید نشانههای دستکاری فایلهای سایت، سرور و فایلهای پیکربندی را بررسی کنید. این ابزارهای مفید، تغییرات را با نسخه قبلی فایل مقایسه کرده و بروزرسانیها را با قوانین امنیتی تعیین شده، مطابقت می دهند.
تصویر(5)
4. حذف سرویس های اضافی
تنظیمات و پیکربندیهای پیشفرض سیستمعامل، اغلب به دلیل نصب سرویسهای غیرضروری شبکه، ناامن هستند و پورت های بیشتری را برای سوء استفاده احتمالی توسط کاربران مخرب، باز میگذارند. برای افزایش امنیت و بهبود عملکرد سرور، سرویسهای اضافی را غیرفعال کنید و مطمئن شوید که به صورت خودکار در هنگام راهاندازی مجدد سیستم اجرا نمیشوند. این کار باعث آزاد شدن منابع سختافزاری خواهد شد.
5. از طریق اتصالات راه دور (remote) امن به سرور متصل شوید
مدیران سرور بهتر است به صورت محلی (local) وارد وب سرورها شوند. اگر دسترسی از راه دور ضروری باشد، باید توسط پروتکلهای رمزنگاری، توکنهای امنیتی و ابزارهای ورود یکبار مصرف، دسترسی امن فراهم شود. به دلیل خطرات امنیتی، از کامپیوترها و شبکههای عمومی استفاده نکنید.
تصویر(6)
6. غیر فعال سازی حساب کاربری های بلا استفاده
اگر حسابهای کاربری غیرفعال را بدون بررسی رها کنید، احتمال ایجاد خطر امنیتی برای وب سرور وجود خواهد داشت زیرا ممکن است این حسابها توسط هکرها مورد سواستفاده قرار گیرند. بنابراین، همواره کاربران غیرفعال را شناسایی کرده و در صورت عدم نیاز به دسترسی، آنها را حذف کنید.
7. حداقل سطح دسترسی را به کاربران خود اختصاص دهید
اصل کمترین امتیاز بدین معنا است که هر کاربر کمترین میزان دسترسی را برای انجام امور مرتبط به خود داشته باشد. این اصل برای ایجاد امنیت و کاهش خطرات، بسیار مهم است.
جمع بندی
استفاده از فایروال می تواند سبب تقویت امنیت سایت، شناسایی آسیب پذیری ها، کاهش دسترسی رباتهای مخرب و حملات DDoS گردد. همواره از روشهای ارتباطی امن و جدید مانند TLS v1.2 و رمزنگاری AES برای وب سرورهای خود استفاده کرده و مطمئن شوید که برای رمزنگاری دادهها HTTPS را فعال نموده اید. همچنین همواره تنظیمات فایل php.ini را رصد نموده و متغیر های مورد نیاز را تغییر دهید.