Nahrávání SVG souborů do knihovny médií, bezpečně sanitizované proti XSS
WordPress SVG soubory ve výchozím stavu blokuje z dobrého důvodu — SVG je ve skutečnosti spustitelný XML dokument, který může obsahovat <script>. SVG upload povolí jejich nahrávání a každý soubor při uložení projde sanitizací, která odstraní nebezpečný kód a ponechá vizuální obsah beze změny.
Hlavní funkce
- Sanitizace přes knihovnu enshrined/svg-sanitize — stejný nástroj používá i známý plugin Safe SVG
- Odstraní <script> tagy, on* event handlery a další vektory pro XSS
- Zachová vizuální obsah beze změny — cesty, tvary, barvy, viewBox zůstávají netknuté
- Nahrávat SVG může jen uživatel s capability upload_files, stejně jako ostatní soubory
- Nastavitelný práh velikosti souboru, od kterého se sanitizace chová jinak — u velkých/komplexních SVG trvá déle
Jak to funguje
Modul rozšíří seznam povolených MIME typů o image/svg+xml jen pro uživatele s oprávněním upload_files a zapojí se do wp_handle_upload_prefilter, kde ještě před finálním uložením spustí obsah souboru přes enshrined/svg-sanitize.
Sanitizer parsuje SVG jako XML a odstraňuje konkrétní nebezpečné uzly a atributy (script, on*, foreignObject apod.) podle whitelisty povolených elementů, místo aby soubor procházel obecným regexem — díky tomu zůstane grafika vizuálně beze změny. U souborů nad nastavený limit velikosti se sanitizace chová jinak, aby nešlo o zbytečné zatížení serveru u výjimečně velkých souborů.
Alternativa k pluginům Safe SVG nebo SVG Support.