| Minimum WordPress Sürümü | 6.0 |
| Test Edilen WordPress Sürümü | 7.1 |
| PHP | 7.4+ |
| Stabil Versiyon | 2.0.0 |
| Lisans | GPLv2 ya da daha sonrası |
| Lisans URI | https://www.gnu.org/licenses/gpl-2.0.html |
SVG Enabler, WordPress medya yöneticisinden SVG uzantılı dosyaları güvenli şekilde yükleyip kullanabilmeniz için geliştirilen SVG desteği eklentisidir.
Her yüklenen SVG dosyası, sitenize kaydedilmeden önce temizlenir. SVG bir XML formatı olduğu için JavaScript, olay yöneticisi öznitelikleri ve harici referanslar taşıyabilir — bu da temizlenmemiş bir SVG yüklemenin, sitenize rastgele HTML ve JavaScript yüklemeye eşdeğer olduğu anlamına gelir.
<script>etiketleri ve satır içi JavaScriptonload,onclick,onerrorgibi olay yöneticisi öznitelikleri- Bağlantılardaki ve özniteliklerdeki
javascript:adresleri <foreignObject>içerikleri<image>,<use>,hrefvexlink:hrefiçindeki uzak referanslar<style>bloklarındaki uzakurl()ve@importkuralları- XML entity ve DTD tanımları (XXE)
- CSS
expression()vebehavior:bildirimleri
- SVG ve SVGZ yükleme desteği
- Dosya uploads klasörüne taşınmadan önce temizleme
- Aktif olarak geliştirilen
enshrined/svg-sanitizekütüphanesi (0.22.0+) - Medya kütüphanesinde ve düzenleyicide doğru görsel boyutları
- Blok düzenleyici, klasik düzenleyici ve öne çıkarılan görsel desteği
- Filtrelenebilir izin listeleri ve yetki gereksinimleri
- Ayar ekranı gerektirmez, kutudan çıktığı gibi çalışır
- Eklentiler sayfasından Yeni Ekle'ye tıklayın
SVG Enableraraması yapın- Kur ve ardından Etkinleştir'e tıklayın
- Medya kütüphanesinden SVG yükleyebilirsiniz
- Zip dosyasını indirip açın, içinden çıkan
svg-enablerklasörünü/wp-content/plugins/dizinine yükleyin - Eklentiler menüsünden
SVG Enablereklentisini etkinleştirin
Bu paket Packagist'te yayınlanmadığı için önce GitHub deposunu VCS deposu olarak tanıtmanız gerekir:
composer config repositories.optimisthub-svg-enabler vcs https://github.com/optimisthub/wordpress-svg-enabler
composer require optimisthub/wordpress-svg-enablerBedrock kullanıyorsanız eklenti, type
alanı wordpress-plugin olduğu için composer/installers tarafından
doğru dizine yerleştirilir. Projenizin composer.json dosyasına şunları
ekleyin:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/optimisthub/wordpress-svg-enabler"
}
],
"require": {
"optimisthub/wordpress-svg-enabler": "^2.0"
},
"extra": {
"installer-paths": {
"web/app/plugins/{$name}/": ["type:wordpress-plugin"]
}
},
"config": {
"allow-plugins": {
"composer/installers": true
}
}
}Ardından:
composer update optimisthub/wordpress-svg-enablerEklenti web/app/plugins/wordpress-svg-enabler/ dizinine, svg-sanitize
bağımlılığıyla birlikte kurulur. Etkinleştirmek için:
wp plugin activate svg-enablerNot:
installer-pathstanımı olmadan eklentivendor/altına kurulur ve WordPress onu görmez.composer/installerspaketinin kurulu ve izinli olduğundan emin olun.
WordPress eklentilerini Composer ile yönetmenin alternatif bir yolu için wpackagist.org deposuna bakabilirsiniz.
SVG Enabler bir "kur ve unut" eklentisidir. Ayar alanı yoktur; eklenti etkinleştirildiği anda çalışmaya başlar.
Varsayılan olarak yalnızca yöneticiler (manage_options yetkisi olanlar) SVG yükleyebilir. SVG kod çalıştırabilen tek görsel formatı olduğu için diğer roller engellenir.
optimisthub_svg_enabler_capability filtresi ile bu değiştirilebilir:
// Editörlerin de SVG yüklemesine izin ver
add_filter( 'optimisthub_svg_enabler_capability', function ( $capability ) {
return 'edit_others_posts';
} );Evet. optimisthub_svg_enabler_allowed_tags ve optimisthub_svg_enabler_allowed_attributes filtrelerini kullanabilirsiniz:
add_filter( 'optimisthub_svg_enabler_allowed_tags', function ( $tags ) {
$tags[] = 'use';
return $tags;
} );
add_filter( 'optimisthub_svg_enabler_allowed_attributes', function ( $attributes ) {
$attributes[] = 'target';
return $attributes;
} );Dosya geçerli XML değilse, <svg> kök etiketi içermiyorsa veya temizlenemiyorsa reddedilir. Reddedilen dosyalar hiçbir zaman kaydedilmez. Dosyayı Inkscape veya Illustrator gibi bir vektör düzenleyici ile yeniden kaydetmeyi deneyin.
Bilinen tehlikeli yapıları temizler ve sanitizer kütüphanesini güncel tutar. Ancak hiçbir sanitizer tam garanti sayılamaz — bu yüzden yükleme yetkisi varsayılan olarak yöneticilerle sınırlıdır. Yalnızca güvendiğiniz kaynaklardan SVG yükleyin.
# Bağımlılıkları kur
composer install
# PHP söz dizimi kontrolü
composer lint
# WordPress kod standartları
composer phpcs
# Güvenlik testleri (12 XSS/XXE vektörü)
php .tests/security-test.php
# Yanlış-pozitif testleri
php .tests/false-positive-test.phpGüvenlik
- Uzak referanslar artık kaldırılıyor:
href,xlink:href,srcgibi özniteliklerdeki uzak adresler temizleniyor. Önceden yüklenen bir SVG dış sunucuya istek atabiliyordu. <style>bloklarındaki@import, uzakurl(),expression()vebehavior:kaldırılıyor.enshrined/svg-sanitize0.15.4 → 0.22.0. Eski sürüm CVE-2025-55166, CVE-2022-23638 ve CVE-2019-10772'den etkileniyordu.- SVG yükleme artık
manage_optionsyetkisi istiyor. Eski kontrol, yalnızca multisite'ta geçerli olanunfiltered_uploadkullanıyordu.
Düzeltmeler
svgFileValidator()var olmayan$this->sanitize()metodunu çağırıyordu → her SVG yüklemesinde ölümcül hata.- Aynı callback
wp_check_filetype_and_extiçin 4 argümanla kayıtlıydı ama 1 parametre tanımlıyordu. - Filtrenin kendi içinden
wp_check_filetype_and_ext()çağrılması (sonsuz döngü riski) kaldırıldı. - İzin verilen öznitelik/etiket filtreleri uygulanıyor ama dönüş değerleri atılıyordu.
- SVG görselleri 1x1 piksel görünüyordu; gerçek boyutlar artık
width/heightveyaviewBox'tan okunuyor. srcsetartık SVG ekleri için bozuk kayıt üretmiyor.
Diğer
- Namespaced PSR-4 yapı (
OptimistHub\SvgEnabler). composer.jsoneklendi — daha önce.gitignoreiçinde olduğu için bağımlılıklar sapmıştı.ext-dom/ext-libxmlyoksa SVG yükleme etkinleştirilmiyor ve yönetici uyarısı gösteriliyor.
- Yazar adı düzeltmesi.
- GitHub Action eklemeleri.
- Kararlı sürüm.
Geliştirici: Optimist Hub
