کد غیرفعالسازی اجرای فایلهای PHP در پوشه آپلودها (uploads)
یک فایل .htaccess جدید درون پوشه wp-content/uploads بسازید و دستور مسدودسازی اجرای تمام فایلهای php و فایلهای مشتق شده از آن را در آن قرار دهید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29# جلوگیری قطعی از اجرای کدهای PHP در پوشه آپلودها
<FilesMatch "(?i)\.(php|php[0-9]|phtml|pl|py|jsp|asp|htm|shtml|sh|cgi)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
</FilesMatch>
کد را کجا قرار دهیم؟ (Placement Guide)
دقت کنید: این کد نباید در .htaccess ریشه قرار گیرد! باید یک فایل جدید با نام .htaccess در داخل پوشه wp-content/uploads/ بسازید و کد را در آن ذخیره کنید.
این کد چگونه کار میکند؟ (How it Works)
دستور FilesMatch با الگوی عبارات باقاعده هرگونه فایلی با پسوند php، phtml و سایر اسکریپتهای اجرایی را شناسایی کرده و اجرای آنها را با خطای 403 رد میکند.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
در تمامی سایتهای وردپرسی و به ویژه سایتهایی که فرم آپلود مدارک یا فایل برای کاربران دارند.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
برخی افزونههای قدیمی و غیر استاندارد فاکتورساز که در پوشه uploads فایل php میسازند (بهتر است آن افزونهها جایگزین شوند).
پیشنیازهای اجرا
دسترسی مدیریت فایل یا FTP به پوشه wp-content/uploads.
نحوه تست و اطمینان از عملکرد
یک فایل تستی بنام test.php حاوی <?php echo 'test'; ?> در uploads بسازید و در مرورگر باز کنید؛ باید خطای 403 بدهد و کدی اجرا نشود.
نحوه بازگردانی سریع (Rollback)
فایل .htaccess درون پوشه uploads را حذف کنید.
خطاهای رایج و راهحل رفع
قرار دادن این کد در ریشه هاست که باعث از کار افتادن کل سایت و خطای ۵۰۰ میشود! فقط در uploads قرار گیرد.
ملاحظات و نکات امنیتی
این کد شماره یکِ اقدامات امنیتی در جلوگیری از هک شدن سایت از طریق آسیبپذیریهای فرمهای آپلود و بدافزارها است.
تاثیر بر سرعت و پرفورمنس
هیچ تاثیر منفی بر سرعت نمایش تصاویر ندارد.