Safe SVG

Beschreibung

Safe SVG ist der beste Weg, um das Hochladen von SVGs in WordPress zu ermöglichen!

Es ermöglicht, SVG-Uploads zuzulassen und gleichzeitig sicherzustellen, dass sie bereinigt werden, um zu verhindern, dass SVG-/XML-Schwachstellen die Website beeinträchtigen. Außerdem werden die hochgeladenen SVGs in der Medienbibliothek in allen Ansichten in der Vorschau angezeigt.

Aktuelle Funktionen

  • Bereinigte SVGs – Öffne keine Sicherheitslücken in deiner WordPress-Website, indem du den Upload von nicht bereinigten Dateien erlauben.
  • SVGO-Optimierung – Lässt deine SVG-Dateien beim Hochladen durch das SVGO-Tool laufen, um Platz zu sparen. Diese Funktion ist standardmäßig deaktiviert, kann aber durch Hinzufügen des folgenden Codes aktiviert werden: add_filter( 'safe_svg_optimizer_enabled', '__return_true' );
  • SVGs in der Mediathek anzeigen – Die Zeiten sind vorbei, in denen man raten musste, welches SVG das richtige ist. Wir aktivieren SVG-Vorschauen in der WordPress-Mediathek.
  • Bestimme, wer hochladen darf – Schränke SVG-Uploads auf bestimmte Benutzer auf deiner WordPress-Website ein oder erlaube jedem, diese hochzuladen.

Ursprünglich ein Proof of Concept für #24251.

Die SVG-Bereinigung wird durch die folgende Bibliothek durchgeführt: https://github.com/darylldoyle/svg-sanitizer.

SVG-Optimierung erfolgt mit Hilfe der folgenden Bibliothek: https://github.com/svg/svgo.

Technical: Upload Path Security

WordPress’s _wp_handle_upload( $file, $action ) function allows any $action value, which determines the filter hook name: {$action}_prefilter. Safe SVG hooks common actions like wp_handle_upload and wp_handle_sideload, but cannot hook arbitrary custom actions defined by third-party code. Since upload actions are unbounded and MIME allowances are global, we cannot guarantee sanitization coverage across all possible upload paths.

Blöcke

Dieses Plugin bietet 1 Block.

  • Safe SVG Display the SVG icon

Installation

Install through the WordPress directory or download, unzip and upload the files to your /wp-content/plugins/ directory

FAQ

Können wir die erlaubten Attribute und Tags ändern?

Ja, dies kann mit Hilfe der Filter svg_allowed_attributes und svg_allowed_tags geschehen.
Es wird dafür ein Argument benötigt, das zurückgegeben werden muss. Siehe nachfolgende Beispiele:

add_filter( 'svg_allowed_attributes', function ( $attributes ) {

    // Do what you want here...

    // This should return an array so add your attributes to
    // to the $attributes array before returning it. E.G.

    $attributes[] = 'target'; // This would allow the target="" attribute.

    return $attributes;
} );


add_filter( 'svg_allowed_tags', function ( $tags ) {

    // Do what you want here...

    // This should return an array so add your tags to
    // to the $tags array before returning it. E.G.

    $tags[] = 'use'; // This would allow the <use> element.

    return $tags;
} );

Can my theme style an inline SVG?

Mostly, yes. The Inline SVG block renders an SVG that carries its own <style> element inside a shadow root, because CSS inside an inline SVG is otherwise applied to the whole page rather than just the SVG. Stylesheets cannot reach into a shadow root, so theme CSS such as .entry-content svg { fill: red; } will not apply to those SVGs.

Inherited properties still cross the boundary, so setting color on an ancestor and using currentColor inside the SVG works, as do CSS custom properties. SVGs that do not contain a <style> element are rendered without the shadow root and can be styled by theme stylesheets.

To turn isolation off, at the cost of allowing an SVG’s CSS to affect the rest of the page:

add_filter( 'safe_svg_inline_use_shadow_dom', '__return_false' );

Why doesn’t Safe SVG globally enable SVG uploads?

Safe SVG only allows SVGs through upload paths it can actively sanitize. While most WordPress uploads use standard functions like wp_handle_upload() (which Safe SVG hooks), plugins and themes can create custom upload paths by calling WordPress’s underlying _wp_handle_upload() function with arbitrary action parameters.

Globally enabling the image/svg+xml MIME type would allow SVGs through all upload paths—including custom ones Safe SVG cannot intercept and sanitize. This would create security vulnerabilities where unsanitized SVGs containing malicious scripts could be uploaded.

This is a deliberate design decision: Safe SVG prioritizes guaranteed sanitization over broad compatibility. SVGs are only allowed when we can ensure they’re safe.

Where do I report security bugs found in this plugin?

Please report security bugs found in the source code of the Safe SVG plugin through the Patchstack Vulnerability Disclosure  Program. The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin.

Rezensionen

6. August 2026 1 Antwort
Must use plugin, well maintained, installing almost every time and just now I've realized, that I didn't review it. Keep it up and thanks!
11. März 2026 1 Antwort
Needed SVG upload support, and this plugin did the job. Very lightweight and easy to use. No issues so far. Some additional settings would be nice, but overall, it's quite solid.
21. Juni 2025 1 Antwort
Would have given a 5 star, but it seems support is missing for the taxonomy / terms section (like in categories) upload for SVG images. Keep getting an error that the upload isn't supported. Hopefully this will be fixed in a future update. Will update once this is added. Cheers!
30. April 2025 1 Antwort
Great plugin! very usefull, but please can you add the possibility to add an inline SVG on the block pasting svg code? Thanks!
Alle 79 Rezensionen lesen

Mitwirkende und Entwickler

„Safe SVG“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:

Mitwirkende

„Safe SVG“ wurde in 30 Sprachen übersetzt. Danke an die Übersetzer für ihre Mitwirkung.

Übersetze „Safe SVG“ in deine Sprache.

Interessiert an der Entwicklung?

Durchstöbere den Code, sieh dir das SVN-Repository an oder abonniere das Entwicklungsprotokoll per RSS.

Änderungsprotokoll

2.5.0 – 2026-09-07

2.4.0 – 2025-09-22

2.3.3 – 2025-08-13

2.3.2 – 2025-07-21

2.3.1 – 2024-12-05

2.3.0 – 2024-11-25

2.2.6 – 2024-08-28

View historical changelog details here.