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

در این مقاله به زبان ساده توضیح می‌دهیم چرا این کار ضروری است و چطور می‌توانید تنها با چند خط کد، امنیت وردپرس خود را چند برابر کنید.

 

چرا باید اجرای PHP را در پوشه‌های خاص محدود کنیم؟

پوشه‌هایی مثل:

/wp-content/uploads/

/wp-includes/

/wp-content/themes/

/wp-content/plugins/

محل ذخیره فایل‌هایی هستند که آپلود می‌کنید یا افزونه‌ها از آنها استفاده می‌کنند.
در حالت عادی وردپرس اجازه می‌دهد فایل‌های PHP در بیشتر این پوشه‌ها اجرا شوند؛ اما این موضوع خطرناک است زیرا:

✔️ ممکن است یک هکر با دور زدن امنیت، فایل PHP مخرب آپلود کند
✔️ اجرای فایل‌های ناشناس، امکان تزریق کد و بک‌دور را فراهم می‌کند
✔️ این روش یکی از رایج‌ترین مسیرهای هک وردپرس است
✔️ حتی با داشتن امنیت کامل، آپلودرهای آسیب‌پذیر افزونه‌ها می‌توانند خطرساز شوند

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

 

ساده‌ترین روش: افزودن فایل .htaccess داخل پوشه‌های مهم

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

/wp-content/uploads/
/wp-content/themes/
/wp-content/plugins/

و داخل آن این کد را قرار دهید:

<FilesMatch "\.(php|php3|php4|php5|php7|phtml|phps)$">
    deny from all
</FilesMatch>

این کد به وب‌سرور می‌گوید هر فایلی با پسوند PHP که در این پوشه قرار بگیرد اجرا نشود.

 

جلوگیری از آپلود شدن فایل PHP از طریق functions.php

حتی اجرای PHP را بستیم، اما بهتر است آپلود این فایل‌ها هم ممنوع شود.

در فایل functions.php این کد را بگذار:

 

function rolfa_block_php_uploads($file) {
    $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
    $blocked = array('php', 'php3', 'php4', 'php5', 'php7', 'phtml', 'phps');

    if (in_array($ext, $blocked)) {
        $file['error'] = 'آپلود فایل‌های PHP در این سایت مجاز نیست.';
    }

    return $file;
}
add_filter('wp_handle_upload_prefilter', 'rolfa_block_php_uploads');

این کد کاملاً مانع آپلود فایل‌های خطرناک می‌شود.

 

فعال کردن File Permission درست روی هاست

سطح دسترسی‌ها را به این صورت تنظیم کن:

wp-config.php → 400
htaccess → 444
wp-content → 755
uploads → 755
themes/plugins → 755

این کار باعث می‌شود هیچ‌کس نتواند فایل‌ها را تغییر دهد.

 

محدود کردن اجرای PHP در پوشه uploads (مهم‌ترین بخش)

پوشه uploads تنها جایی است که کاربران و افزونه‌ها معمولاً فایل آپلود می‌کنند.
اگر این مسیر امن نباشد، هر هکری می‌تواند یک فایل PHP را به‌ظاهر تصویر یا zip آپلود کرده و بعد آن را اجرا کند.

با گذاشتن .htaccess:

اجرای اسکریپت‌ها صفر می‌شود

باگ‌های آپلود افزونه‌ها بی‌خطر می‌شوند

حتی اگر فایل مخرب آپلود شود، قابل اجرا نیست

این کار یکی از بهترین اقدامات امنیتی مورد توصیه Wordfence و حتی خود WordPress.org است.

 

آیا این کار روی عملکرد سایت تأثیر می‌گذارد؟

خیر.
این پوشه‌ها محل ذخیره فایل‌های استاتیک مثل عکس، فونت، js و css هستند و اساساً نباید فایل PHP در آنها اجرا شود.
بنابراین:

سرعت سایت کم نمی‌شود

هیچ افزونه‌ای دچار مشکل نمی‌شود

عملکرد وردپرس طبیعی باقی می‌ماند

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

🔰 پیشنهاد مطالعه : نمایش پست‌های اخیراً بروزرسانی شده در وردپرس – کد وردپرس

 

نتیجه‌گیری: یک اقدام کوچک، اما تأثیر گذار

محدود کردن اجرای PHP در پوشه‌های مهم وردپرس یکی از ساده‌ترین و مؤثرترین اقداماتی است که هر مدیر سایت باید انجام دهد.
با چند خط کد ساده می‌توانید جلوی یکی از رایج‌ترین روش‌های هک وردپرس را بگیرید و امنیت سایت خود را چند برابر کنید.

اگر امنیت برایتان مهم است، همین امروز این کار را انجام دهید.

🔹 جهت افزایش امنیت سایت خود آموزش مربوط به اضافه کردن فیلد رمز دوم در صفحه لاگین وردپرس را مطالعه کنید

🔸 اگر میخواهید با نصب یک افزونه امنیتی امنیت سایت خود را افزایش دهید. مقاله افزونه Two Factor Authentication سلاح مخفی برای امنیت وردپرس شما را بررسی نمایید