SHET23

رفع خطای این نوع پرونده در وردپرس؛ ۲ روش امن

رفع خطای این نوع پرونده در وردپرس؛ ۲ روش امن

اگه موقع آپلود فایل در بخش رسانه وردپرس پیام «با عرض پوزش، این نوع پرونده به دلایل امنیتی مجاز نیست» رو می‌بینید، احتمالاً سایتتون خراب نشده. وردپرس برای کم‌کردن خطر فایل‌های مخرب، فقط بعضی فرمت‌ها رو به‌صورت پیش‌فرض قبول می‌کنه. همین محدودیت برای فایل‌هایی مثل فونت، SVG یا PSD گاهی دردسر درست می‌کنه.

توی این راهنما اول می‌بینیم این خطا از کجا میاد، بعد روش فعال‌کردن فرمت موردنیاز رو با Safe SVG و فیلتر upload_mimes یاد می‌گیریم. در آخر هم نوع واقعی فایل و چند نکته امنیتی رو بررسی می‌کنیم تا فقط فرمت لازم روی سایتتون فعال بمونه.

آنچه در این مقاله می‌خوانید

خطای «این نوع پرونده به دلایل امنیتی مجاز نیست» یعنی چی؟

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

با عرض پوزش، این نوع پرونده به دلایل امنیتی مجاز نیست.

پیام خطا در بخش رسانه وردپرس

چرا وردپرس بعضی فرمت‌ها رو اجازه آپلود نمی‌ده؟

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

خطر فایل‌های PHP و فایل‌های اجرایی

فایل‌های PHP، JavaScript، HTML و فایل‌های اجرایی می‌تونن کد اجراشدنی داشته باشن. اگه کاربر نامطمئن چنین فایلی رو وارد سایت کنه، احتمال سرقت اطلاعات، تغییر سایت یا اجرای کد مخرب بالا می‌ره. پس بازکردن این فرمت‌ها برای آپلود عمومی تصمیم امنی نیست.

چرا تغییر پسوند فایل مشکل رو حل نمی‌کنه؟

وقتی اسم فایل رو از .php به .jpg تغییر می‌دید، محتوای واقعی اون عوض نمی‌شه. وردپرس هم فقط اسم فایل رو نمی‌بینه و نوع واقعی فایل رو با بررسی‌هایی مثل wp_check_filetype_and_ext() می‌سنجه. پس فایل سالم رو با MIME type درست آپلود کنید.

قبل از فعال‌کردن یک فرمت، این نکات امنیتی رو بدونید

خطر اجرای کد مخرب و حمله XSS در فایل‌های SVG

SVG یک فایل متنی مبتنی بر XML هست و ممکنه کد یا محتوای ناامن داخلش باشه. اگه پاک‌سازی نشه، خطر حمله XSS وجود داره؛ یعنی کدی داخل مرورگر بازدیدکننده اجرا می‌شه. برای SVG بهتره ابزاری استفاده کنید که فایل رو قبل از استفاده پاک‌سازی کنه.

محدودکردن آپلود به مدیر سایت و کاربران مورداعتماد

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

فعال‌نکردن فرمت‌های PHP، JavaScript، HTML و فایل‌های اجرایی

برای رفع خطا فقط همون فرمت ضروری رو اضافه کنید. فعال‌کردن PHP، JavaScript، HTML، EXE یا فایل‌های اجرایی معمولاً لازم نیست و می‌تونه مسیر ورود فایل مخرب رو باز کنه.

رفع خطا با افزونه Safe SVG

Safe SVG چه کاری انجام می‌ده؟

Safe SVG امکان آپلود SVG رو فراهم می‌کنه و، طبق قابلیت‌های نسخه نصب‌شده، محتوای فایل رو قبل از استفاده پاک‌سازی می‌کنه. جزئیات قابلیت پاک‌سازی و تنظیم نقش‌های کاربری رو قبل از انتشار با صفحه رسمی افزونه تطبیق بدید. آموزش کامل رو می‌تونید در آموزش آپلود تصاویر SVG در وردپرس با افزونه Safe SVG ببینید.

نصب و فعال‌سازی افزونه

  1. از پیشخوان وردپرس وارد «افزونه‌ها» و بعد «افزودن» بشید.
  2. عبارت Safe SVG رو جست‌وجو کنید.
  3. افزونه‌ای رو نصب و فعال کنید که توسعه‌دهنده معتبر و صفحه رسمی در مخزن وردپرس داشته باشه.
  4. یک فایل SVG سالم رو از بخش رسانه آپلود کنید.
نصب افزونه Safe SVG
نصب افزونه Safe SVG

محدودکردن امکان آپلود SVG به نقش‌های کاربری مشخص

بعد از فعال‌سازی، اگه نسخه نصب‌شده چنین تنظیمی داره، فقط نقش‌هایی مثل مدیر یا کاربر مورداعتماد رو برای آپلود SVG انتخاب کنید. اگه این گزینه رو نمی‌بینید، دسترسی رو از راه نقش‌های کاربری وردپرس یا افزونه مدیریت نقش کنترل کنید.

رفع خطا بدون افزونه با فیلتر upload_mimes

اگه فقط خودتون مدیر سایت هستید و یک فرمت مشخص لازم دارید، می‌تونید از فیلتر رسمی upload_mimes استفاده کنید. این روش فقط فرمت‌هایی رو باز می‌کنه که خودتون در کد می‌نویسید؛ اما برای SVG به‌تنهایی پاک‌سازی امنیتی انجام نمی‌ده.

بازکردن فایل functions.php یا افزونه اختصاصی سایت

بهتره کد رو داخل افزونه اختصاصی سایت بذارید تا با عوض‌کردن قالب از بین نره. اگه چنین افزونه‌ای ندارید، فایل functions.php قالب فرزند رو باز کنید. قبل از هر تغییری هم نسخه پشتیبان بگیرید.

بازکردن فایل functions.php قالب فرزند در ویرایشگر فایل پوسته
بازکردن فایل functions.php قالب فرزند در ویرایشگر فایل پوسته

افزودن MIME type فقط برای فرمت موردنیاز

کد زیر فقط SVG و PSD رو به فهرست مجاز اضافه می‌کنه. PSD رو فقط برای فایل‌های مورداعتماد و نقش‌های محدود فعال کنید. این کد برای SVG پاک‌سازی امنیتی انجام نمی‌ده و برای سایت چندکاربره راهکار امن عمومی نیست.

function mihanwp_allowed_mimes( $mimes ) {
    $mimes['svg'] = 'image/svg+xml';
    $mimes['psd'] = 'image/vnd.adobe.photoshop';

    return $mimes;
}
add_filter( 'upload_mimes', 'mihanwp_allowed_mimes' );

بررسی نوع واقعی فایل با wp_check_filetype_and_ext

وردپرس بعد از فیلتر MIME، نوع واقعی فایل رو هم بررسی می‌کنه. مستندات تابع wp_check_filetype_and_ext() نشون می‌ده که پسوند به‌تنهایی برای اعتماد به فایل کافی نیست. فایل رو از منبع مطمئن بگیرید و فقط فرمت لازم رو فعال کنید.

نمونه کد محدود برای فعال‌کردن SVG و PSD

کد بالا فقط فهرست MIMEهای مجاز رو تغییر می‌ده. برای SVG، بدون پاک‌سازی از این روش استفاده نکنید؛ به‌خصوص اگه چند نفر به سایت دسترسی دارن. MIME مربوط به PHP، JavaScript، HTML یا فایل‌های اجرایی رو هم هیچ‌وقت به این فهرست اضافه نکنید.

چطور MIME type درست یک فایل رو پیدا کنیم؟

تفاوت پسوند فایل با MIME type

پسوند، بخش پایانی نام فایل مثل svg یا psd هست. MIME type یک شناسه فنیه که نوع محتوای فایل رو مشخص می‌کنه. مثلاً MIME type فایل SVG برابر image/svg+xml هست.

بررسی MIME type در مستندات معتبر

برای پیدا کردن MIME type، مستندات رسمی سازنده فرمت یا منابع معتبر وب رو ببینید. اسم MIME رو از منبع قابل‌اعتماد بردارید و همون رو در کد بذارید. به فهرست‌های ناشناس یا لینک‌هایی که خطای دسترسی دارن اعتماد نکنید.

بعد از افزودن فرمت، آپلود رو چطور تست کنیم؟

تست با حساب مدیر

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

بررسی خطا برای نویسنده‌ها و کاربران دیگر

بعد از تست مدیر، با یک حساب نویسنده یا کاربر موردنظر هم آزمایش کنید. اگه این افراد به فرمت جدید نیازی ندارن، دسترسی آپلودشون رو باز نذارید.

حذف دسترسی و کد اضافه‌شده در صورت نیاز

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

اگر خطا هنوز نمایش داده می‌شه، این موارد رو بررسی کنید

نوع واقعی و ساختار فایل

فایل رو با نرم‌افزار مناسب باز کنید و مطمئن بشید فقط اسم پسوندش عوض نشده. یک فایل سالم از منبع معتبر بگیرید و دوباره امتحان کنید.

محدودیت‌های هاست و تنظیمات امنیتی

بعضی هاست‌ها یا تنظیمات امنیتی سرور، فرمت‌های خاص رو جداگانه مسدود می‌کنن. اگه کد وردپرس درسته ولی خطا باقی مونده، از پشتیبانی هاست درباره MIME type و قوانین امنیتی سرور سؤال کنید. خطاهای حجم آپلود یا سطح دسترسی هم با این خطا فرق دارن و باید جدا بررسی بشن.

کش سایت و افزونه‌های امنیتی

کش پیشخوان یا افزونه امنیتی ممکنه تنظیمات قبلی رو نگه داره. کش رو پاک کنید، تنظیمات محدودکننده افزونه امنیتی رو موقتاً بررسی کنید و دوباره با یک فایل سالم تست بگیرید.

جمع‌بندی: کدوم روش برای سایت شما بهتره؟

اگه فقط یک مدیر روی سایتتون کار می‌کنه و فرمت ساده‌ای مثل PSD لازم دارید، فیلتر upload_mimes می‌تونه کافی باشه؛ البته فقط برای فایل‌های مورداعتماد و نقش‌های محدود. برای SVG یا سایت‌های چندکاربره، Safe SVG گزینه مناسب‌تریه، به شرطی که قابلیت‌های نسخه نصب‌شده‌اش رو بررسی کنید. در هر دو روش فقط MIME ضروری رو فعال کنید، فایل‌های PHP و اجرایی رو باز نذارید و بعد از تغییر، آپلود رو با چند نقش کاربری امتحان کنید.

پرسش‌های متداول

خطای این نوع پرونده به دلایل امنیتی مجاز نیست یعنی چی؟

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

امن‌ترین راه برای رفع این خطا چیه؟

برای فایل‌های SVG، استفاده از افزونه‌ای مثل Safe SVG می‌تونه مناسب‌تر باشه، چون نسخه‌های دارای قابلیت پاک‌سازی، محتوای ناامن فایل رو حذف می‌کنن. برای فرمت‌های ساده مثل PSD، فقط MIME ضروری رو برای کاربران مورداعتماد فعال کنید.

آیا می‌شه فایل PHP یا JavaScript رو برای آپلود فعال کرد؟

بهتره این کار رو انجام ندید. فایل‌های PHP و JavaScript می‌تونن کد اجراشدنی داشته باشن و فعال‌کردن آپلودشون خطر امنیتی سایتتون رو بالا می‌بره.

آیا تغییر پسوند فایل خطا رو برطرف می‌کنه؟

نه. تغییر پسوند، محتوای واقعی فایل رو عوض نمی‌کنه و وردپرس نوع فایل رو هم بررسی می‌کنه. باید فایل سالم رو با MIME type درست آپلود کنید.

نظر شما در این مورد چیه؟

  1. U35292۱۲ آبان ۱۴۰۰

    سلام ، من این فرمت رو طبق گفته شما انجام دادم ولی خطا نشان میده و سایت بالا نمیاد.
    The file /home/……./public_html/wp-content/themes/……/functions.php is corrupted. و موقعی که کد رو پاک میکنم چند دقیقه بعد سایت درست میشه

  2. U38934۲۷ فروردین ۱۴۰۰

    سلام
    این پوشه قالب سایت کجا هست؟

    • تیم پشتیبانیتیم پشتیبانی۲۸ فروردین ۱۴۰۰

      سلام
      پوشه ی قالب توی هاست شما هست. توی فایل public-html

  3. U34638۱۵ بهمن ۱۳۹۹

    سلام و عرض ادب
    می خواستم بپرسم امکانش هست فقط یک پسوند مانند ppsx را اجازه آپلود دهم یا باید کلا این محدودیت را بردارم؟
    سپاس فراوان.

    • رضا راد۱۶ بهمن ۱۳۹۹

      با روشهای دیگری میتونید فقط یه فرمت خاص اضافه کنید اما نیازی نیست به این دردسرها

  4. U30924۵ آبان ۱۳۹۹

    سلام آقای حسینی
    من اگه قالب اهورا رو بخرم تمام دموهایی که داخل سایت برای اهورا گذاشتند برای من قابل دسترسی میباشد .

    • تیم پشتیبانیتیم پشتیبانی۵ آبان ۱۳۹۹

      با سلام
      بله همینطور هست

  5. U26430۶ اردیبهشت ۱۳۹۹

    با افزونه رایگان WP Add Mime Types به راحتی میشه این کار رو کرد ، و اگر قالب تون هم آپدیت شد کدها نمیپره.

  6. کاربر مهمان۲۷ اسفند ۱۳۹۸

    سلام ممنون از راهنماییتون توی لیست چیزی درباره فرمت تصویر jfif ندیدم میشه اینو بگید چجوری فعال کنم داخل سایتم؟
    همه فرمت ها هست بجز این

    • تیم پشتیبانیتیم پشتیبانی۲۷ اسفند ۱۳۹۸

      با سلام
      این مورد را به زودی به مقاله اضافه خواهیم کرد

  7. U11191۱۷ بهمن ۱۳۹۸

    سلام وقت بخیر
    سوالی برام پیش اومده اگه فایلی بذاریم داخل گوگل داریو یک فایل حجیم و یک لینک دانلود مستقیم از گوگل درایو ایجاد کنیم مثل لینک زیر
    h
    حالا زمانی که در قسمت انتخاب فایل ووکامرسلینک دانلود این شکلی قرار داده میشه زمانی روی ذخیره کلیک میشه مینویسه فرمت انتخابی درست نیست و یک سری فرمت های پیشنهادی نمایش داده میشه
    چه طور میتونیم لینک این شکلی قسمت دانلود های ووکامرس قرار بدیم ؟
    تشکر از زحمات شما .

    • تیم پشتیبانیتیم پشتیبانی۱۷ بهمن ۱۳۹۸

      با سلام
      این مورد جز امکانات ویژوال کامپوزر نمیباشد

  8. کاربر مهمان۱۹ آذر ۱۳۹۸

    ای بابا بازم ارور میده

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسدر حال حاضر آفلاین هستیم. لطفاً پیام بگذارید تا در اولین فرصت پاسخ دهیم.آفلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.