دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
امنیت
  • Folder icon closed Folder open iconCIA Triad چیست؟ آشنایی با سه اصل اساسی امنیت اطلاعات
  • Folder icon closed Folder open iconAttack Surface چیست؟ آشنایی با سطح حمله در امنیت سایبری
  • Folder icon closed Folder open iconThreat چیست؟ آشنایی با مفهوم تهدید در امنیت سایبری
  • Folder icon closed Folder open iconVulnerability چیست؟ آشنایی با آسیب‌پذیری در امنیت سایبری
  • Folder icon closed Folder open iconExploit چیست؟ آشنایی با مفهوم اکسپلویت در امنیت سایبری
  • Folder icon closed Folder open iconRisk چیست؟ آشنایی با مفهوم ریسک در امنیت سایبری
  • Folder icon closed Folder open iconCVE چیست؟ آشنایی با سیستم شماره‌گذاری آسیب‌پذیری‌های امنیتی
  • Folder icon closed Folder open iconCVSS چیست؟ آشنایی با سیستم امتیازدهی آسیب‌پذیری‌های امنیتی
  • Folder icon closed Folder open iconبعد از خرید سرور مجازی لینوکس(VPS)، اولین کارهایی که باید انجام دهید
  • Folder icon closed Folder open iconآموزش تغییر Hostname سرور در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم صحیح Timezone و NTP در لینوکس
  • Folder icon closed Folder open iconآموزش بروزرسانی کامل سیستم‌عامل لینوکس همه توزیع ها
  • Folder icon closed Folder open iconآموزش ساخت کاربر جدید و حذف استفاده روزمره از Root در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم صحیح sudo در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم Banner ورود به SSH در لینوکس
  • Folder icon closed Folder open iconآموزش مدیریت Password Policy در لینوکس
  • Folder icon closed Folder open iconآموزش نصب و راه‌اندازی SSH Key Authentication در لینوکس
  • Folder icon closed Folder open iconآموزش غیرفعال کردن ورود مستقیم Root از طریق SSH
  • Folder icon closed Folder open iconتغییر پورت SSH؛ آیا واقعاً امنیت سرور را افزایش می‌دهد؟
  • Folder icon closed Folder open iconآموزش محدود کردن کاربران مجاز SSH در لینوکس
  • Folder icon closed Folder open iconآموزش محدود کردن دسترسی SSH بر اساس IP در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم LoginGraceTime در SSH؛ کاهش زمان انتظار برای احراز هویت
  • Folder icon closed Folder open iconآموزش تنظیم MaxAuthTries در SSH؛ محدود کردن تعداد تلاش‌های ورود ناموفق
  • Folder icon closed Folder open iconآموزش بررسی لاگ‌های SSH در لینوکس
  • Folder icon closed Folder open iconآموزش عیب‌یابی مشکلات SSH در لینوکس
  • Folder icon closed Folder open iconآموزش کامل UFW در لینوکس؛ راه‌اندازی، مدیریت و ایمن‌سازی فایروال سرور
  • Folder icon closed Folder open iconnftables چیست؟ آشنایی با فایروال نسل جدید لینوکس و جایگزین iptables
  • Folder icon closed Folder open iconآموزش کامل Firewalld در لینوکس
  • Folder icon closed Folder open iconآموزش کامل ConfigServer Security & Firewall (CSF)
  • Folder icon closed Folder open iconآموزش مشاهده Loginهای اخیر در لینوکس
  • Folder icon closed Folder open iconآموزش بررسی پردازش‌های مشکوک در لینوکس
  • Folder icon closed Folder open iconآموزش بررسی Cron Jobهای مشکوک در لینوکس
  • Folder icon closed Folder open iconآموزش کامل Fail2Ban در لینوکس؛ نصب و راه‌اندازی
  • Folder icon closed Folder open iconآموزش نصب RKHunter در لینوکس
  • Folder icon closed Folder open iconآموزش نصب Chkrootkit در لینوکس
  • Folder icon closed Folder open iconآموزش اسکن سرور با RKHunter و Chkrootkit
  • Folder icon closed Folder open iconآموزش نصب، پیکربندی و اسکن سرور با AIDE در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، پیکربندی و استفاده از Auditd در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، اسکن و تحلیل امنیت سرور با Lynis در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، بروزرسانی و اسکن سرور با ClamAV در لینوکس
  • Folder icon closed Folder open iconآموزش Hardening وب‌سرور Nginx
  • Folder icon closed Folder open iconآموزش Hardening وب‌سرور Apache
  • Folder icon closed Folder open iconآموزش Hardening PHP
  • Folder icon closed Folder open iconآموزش Hardening پایگاه داده MySQL
  • Folder icon closed Folder open iconآموزش Hardening سرویس Redis
  • Folder icon closed Folder open iconآموزش Hardening سرویس Docker
  • Folder icon closed Folder open iconآموزش Hardening سرویس FTP
امنیت

آموزش Hardening PHP

آموزش Hardening PHP

مقدمه

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

تنظیمات پیش‌فرض PHP برای همه سناریوها مناسب نیستند و بهتر است پس از نصب، مجموعه‌ای از تنظیمات امنیتی روی آن اعمال شود. این فرآیند که با عنوان PHP Hardening شناخته می‌شود، باعث کاهش سطح حمله و افزایش امنیت برنامه‌های تحت وب خواهد شد.

در این مقاله مهم‌ترین تنظیمات امنیتی PHP را بررسی می‌کنیم.


بررسی نسخه PHP

ابتدا نسخه نصب‌شده را بررسی کنید:

php -v

برای مشاهده ماژول‌های نصب‌شده:

php -m

همیشه از نسخه‌ای استفاده کنید که همچنان پشتیبانی امنیتی دریافت می‌کند.


پیدا کردن فایل php.ini

محل فایل تنظیمات:

php --ini

یا:

php -i | grep php.ini

مخفی کردن نسخه PHP

در فایل php.ini مقدار زیر را تغییر دهید:

expose_php = Off

با این کار هدر X-Powered-By ارسال نخواهد شد.


غیرفعال کردن نمایش خطاها

در محیط Production نباید خطاهای PHP به کاربران نمایش داده شوند.

display_errors = Off
display_startup_errors = Off
log_errors = On

ثبت خطاها در لاگ

error_log = /var/log/php_errors.log

در صورت استفاده از PHP-FPM ممکن است مسیر لاگ متفاوت باشد.


محدود کردن دسترسی فایل‌ها

برای جلوگیری از دسترسی PHP به کل سیستم:

open_basedir = /var/www/:/tmp/

در این حالت PHP فقط به مسیرهای مشخص‌شده دسترسی خواهد داشت.


غیرفعال کردن اجرای توابع خطرناک

در بسیاری از وب‌سایت‌ها این توابع نیازی نیستند.

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec

در صورت نیاز نرم‌افزار، قبل از غیرفعال کردن این توابع سازگاری برنامه را بررسی کنید.


غیرفعال کردن allow_url_fopen

اگر برنامه به آن نیاز ندارد:

allow_url_fopen = Off

غیرفعال کردن allow_url_include

allow_url_include = Off

محدود کردن Upload

file_uploads = On

upload_max_filesize = 20M

post_max_size = 20M

مقادیر را متناسب با نیاز وب‌سایت تنظیم کنید.


محدود کردن مصرف حافظه

memory_limit = 256M

محدود کردن زمان اجرای اسکریپت

max_execution_time = 30

محدود کردن زمان دریافت داده

max_input_time = 60

محدود کردن تعداد متغیرهای ورودی

max_input_vars = 1000

این گزینه می‌تواند از برخی حملات مبتنی بر ارسال تعداد زیاد پارامتر جلوگیری کند.


مدیریت Session

session.cookie_httponly = On

session.cookie_secure = On

session.use_strict_mode = On

اگر وب‌سایت از HTTPS استفاده می‌کند، فعال بودن session.cookie_secure توصیه می‌شود.


محدود کردن دسترسی به فایل‌های موقت

sys_temp_dir = /tmp

غیرفعال کردن اجرای PHP در پوشه Upload

اگر کاربران فایل آپلود می‌کنند، اجازه اجرای فایل PHP در آن مسیر را ندهید.

در Nginx:

location ~* ^/uploads/.*\.php$ {
    deny all;
}

در Apache:

<Directory "/var/www/html/uploads">
    php_admin_flag engine off
</Directory>

استفاده از PHP-FPM

در صورت امکان، از PHP-FPM استفاده کنید و هر وب‌سایت را با Pool جداگانه اجرا کنید تا ایزوله‌سازی و مدیریت منابع بهتر انجام شود.


بررسی تنظیمات

php -i

یا:

php -i | less

راه‌اندازی مجدد سرویس

PHP-FPM:

sudo systemctl restart php8.3-fpm

نسخه سرویس را متناسب با نسخه PHP خود تغییر دهید.


تست امنیت

پس از اعمال تنظیمات، موارد زیر را بررسی کنید:

  • نسخه PHP نمایش داده نمی‌شود.
  • خطاها برای کاربران نمایش داده نمی‌شوند.
  • لاگ‌ها ثبت می‌شوند.
  • توابع خطرناک غیرفعال شده‌اند.
  • Upload مطابق نیاز محدود شده است.
  • Sessionها با تنظیمات امن ایجاد می‌شوند.

بهترین روش‌ها

  • PHP را همواره بروزرسانی کنید.
  • فقط Extensionهای موردنیاز را نصب کنید.
  • از نسخه‌های پشتیبانی‌شده استفاده کنید.
  • فایل‌های آپلودی را خارج از Document Root نگهداری کنید.
  • دسترسی فایل‌ها و پوشه‌ها را به‌درستی تنظیم کنید.
  • از WAF مانند ModSecurity یا Imunify360 استفاده کنید.
  • لاگ‌های PHP را به‌صورت منظم بررسی کنید.

اشتباهات رایج

  • فعال بودن display_errors
  • فعال بودن expose_php
  • استفاده از نسخه منسوخ PHP
  • فعال بودن توابع خطرناک بدون نیاز
  • اجرای فایل‌های PHP از پوشه Upload
  • نصب Extensionهای غیرضروری
  • عدم بررسی لاگ‌های PHP

چک‌لیست

پس از Hardening، موارد زیر را بررسی کنید:

  • PHP بروزرسانی شده است.
  • نسخه PHP مخفی شده است.
  • خطاها فقط در لاگ ثبت می‌شوند.
  • توابع خطرناک غیرفعال شده‌اند.
  • Sessionها با تنظیمات امن مدیریت می‌شوند.
  • محدودیت‌های Upload و Memory اعمال شده‌اند.
  • اجرای PHP در مسیرهای Upload غیرفعال شده است.

جمع‌بندی

Hardening PHP یکی از مهم‌ترین اقدامات برای افزایش امنیت وب‌سایت‌های مبتنی بر PHP است. با اعمال تنظیماتی مانند مخفی کردن نسخه PHP، غیرفعال کردن نمایش خطاها، محدود کردن دسترسی به فایل‌ها، غیرفعال کردن توابع خطرناک و استفاده از تنظیمات امن برای Sessionها، می‌توان بسیاری از حملات رایج را خنثی یا اثر آن‌ها را به‌طور قابل توجهی کاهش داد.

برای دستیابی به امنیت بیشتر، این تنظیمات را در کنار Hardening وب‌سرور، بروزرسانی منظم PHP، استفاده از WAF و پایش مداوم لاگ‌ها اجرا کنید.

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

آموزش Hardening PHP

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

آگوست 2026
شیدسچپج
1234567
891011121314
15161718192021
22232425262728
293031 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام