پرش به محتویات

آپلود SVG

وردپرس به‌طور پیش‌فرض آپلود فایل SVG را مجاز نمی‌کند چون این فرمت مبتنی بر XML است و می‌تواند کد مخرب داشته باشد — به‌ویژه اگر از منابع ناشناخته یا توسط کاربران غیرقابل اعتماد دانلود شود.

نحوه فعال‌سازی پشتیبانی SVG

می‌توانید آپلود SVG را به‌ازای نقش کاربری در بریکس (Bricks) > تنظیمات (Settings) > SVG Uploads (تب General) فعال کنید. پس از فعال‌سازی، Bricks تلاش می‌کند همه فایل‌های SVG آپلودشده را sanitize کند.

یادداشت

هیچ sanitizer داخلی SVG تضمین ۱۰۰٪ حذف همه کدهای مخرب را نمی‌دهد. بنابراین SVG را فقط از منابع معتبر دانلود کنید و آپلود SVG را فقط برای نقش‌هایی فعال کنید که به آن‌ها اعتماد دارید.

دور زدن sanitize

sanitize همه SVGهای آپلودشده به وردپرس منطقی است، اما ممکن است بخواهید به sanitizer Bricks تکیه نکنید. برای دور زدن منطق sanitize، Bricks hook bricks/svg/bypass_sanitization را فراهم می‌کند:

add_filter( 'bricks/svg/bypass_sanitization', function( $bypass, $file ) {
  // Perform some logic to decide to bypass or not the sanitization

  return $bypass;
}, 10, 2 );

پارامترهای callback فیلتر:

  • $bypass متغیر boolean است (true = bypass)
  • $file یک عنصر از آرایه $_FILES را نشان می‌دهد

برای bypass بدون شرط:

add_filter( 'bricks/svg/bypass_sanitization', '__return_true' );

tagها و attributeهای مجاز sanitizer

sanitizer از لیست از پیش‌تعریف‌شده tag و attribute مجاز استفاده می‌کند. در موارد خاص ممکن است SVG شامل tag/attribute دیگری باشد و بخواهید آن‌ها را به لیست مجاز اضافه یا برای امنیت بیشتر محدود کنید. Bricks دو فیلتر دارد:

add_filter( 'bricks/svg/allowed_tags', function( $tags ) {
    $tags[] = 'filter'; // Allow the "filter" tag

    return $tags;
} );
add_filter( 'bricks/svg/allowed_attributes', function( $attributes ) {
    $attributes[] = 'filterUnits'; // Allow the "filterUnits" attribute

    return $attributes;
} );