Uploadfilter bei WordPress? „Dieser Dateityp ist aus Sicherheitsgründen leider nicht erlaubt.“

Möchtest du etwas (außer Bilder) in die Mediathek von WordPress laden oder einen Import deiner Artikel bei WooCommerce starten, aber die Fehlermeldung „Dieser Dateityp ist aus Sicherheitsgründen leider nicht erlaubt.“ macht dir einen Strich durch die Rechnung? Kein Grund zur Panik! Das ist eine Sicherheitsmaßnahme von WordPress, damit sich keine unerwarteten Dateien auf den Server laden lassen, womit unter Anderen Schadcode eingeschleust werden kann.

Setz dich in Ruhe hin, trink ein Heißgetränk und wir erklären dir den Rest: Die Mediathek von WordPress dient im Allgemeinen dazu, nicht nur Bilder, sondern auch andere Dateien für deine Website zu verwalten. Daher der Name Mediathek und nicht Bilderthek 😉 Möchtest du nun beispielsweise eine beliebige Datei hochladen, SVGs oder PDFs zum Download auf deiner Seite anbieten, kann es sein, dass die Mediathek dir den Upload verweigert. Da WordPress nicht weiß, was sich in deiner Datei befindet, blockt es unbekannte Typen aus Sicherheitsgründen. Verhindert so, dass sie überhaupt auf dem Server abgelegt werden können. Während eine gepackte ZIP-Datei aus dem Stand funktionieren sollte, klappt es z.B. mit einer RAR-Datei nicht.

Das moderne und webkonforme SVG-Grafikformat wird leider ebenfalls geblockt. Dieser Dateityp kann neben den reinen Vektorinformationen des Bildes auch Scripte mit sich bringen, welche deine Seite angreifen können. Daher ist der von SVGs in die Mediathek vorerst gesperrt.

Ein weiteres Beispiel dafür, dass der Dateityp nicht erlaubt ist, finden wir bei WooCommerce. Wenn du z.B. Artikel per CSV-Datei importieren möchte, folgt die unerwartete Fehlermeldung prompt und sorgt für Verwirrung, da man sie schließlich auch exportieren kann.

Die schnelle (temporäre!) Lösung: Uploads für alle Dateitypen erlauben

Mit folgender Zeile in der Konfigurationsdatei wp-config.php, kannst du den WordPress eigenen „Uploadfilter“ deaktivieren, bzw. um genau zu sein, den Upload aller Dateien für deine Seite freischalten. Kopiere dazu den Befehl und füge ihn am Ende deiner wp-config.php ein. (Die Datei befindet sich auf dem Server im Hauptverzeichnis deiner Website.)

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Nun sollte es auch mit dem gewünschten Upload klappen und deine Datei landet in der Mediathek, statt geblockt zu werden.

Entferne oder deaktivere (statt „true“ einfach „false“ eintragen) nach Möglichkeit diesen Eintrag wieder, sobald du fertig bist mit deinem Upload, um die Sicherheit deiner Seite nicht unnötig zu gefährden.

Die saubere (empfohlene) Lösung: Uploads für bestimmte Dateitypen erlauben

Sollte der o.g. Eintrag in der wp-config.php nicht ausreichend sein oder du eine dauerhafte Uploadmöglichkeit anstrebst, müssen wir z.B. den SVG-Dateityp für deine WordPress-Installation aktivieren. Öffne dazu deine functions.php deines (Child-)Themes und trage folgende Zeilen ein.

function dwp_mime($mimes) {
    $mimes['svg'] = 'image/svg+xml';
    return $mimes;
}
add_filter('upload_mimes', 'dwp_mime');

Damit solltest du keine Probleme mehr haben, deine SVG-Datei in die Mediathek hochzuladen.

Besonderheit bei SVG-Grafiken

Beim hochladen von SVG-Dateien gibt es ab WordPress 5 noch eine Kleinigkeit zu beachten. Diese Vektorgrafiken müssen in der ersten Zeile mit einer XML-Deklaration wie der nachfolgenden beginnen um akzeptiert zu werden und sollten sonst keinen unsicheren Code enthalten.

1
<?xml version="1.0" encoding="utf-8"?>

Je nachdem wie du deine SVG-Grafiken erstellst, kann es vorkommen, dass die genannte Deklaration fehlt. Bei Adobe Illustrator ist die Auszeichnung bereits enthalten, wobei du bei Inkscape darauf achten solltest, dass sie im Speicherdialog (der SVG-Ausgabe) nicht entfernt wird. Im Zweifel öffne deine Grafik mit einem Texteditor (z.B. Sublime) und ergänze die Angabe in der ersten Zeile, sollte sie noch fehlen. Um komplett sicherzugehen, kannst du auch Online-Tools wie dieses hier nutzen, um deine SVG-Datei zu „säubern“ und korrekt zu formatieren.

Weitere Dateitypen für den Upload freigeben

Grundsätzlich sind verschiedenste Dateiformate für deinen Upload in WordPress freigegeben, welche mit dem o.g. Eintrag in der wp-config.php problemlos hochgeladen werden können. Diese umfassen die meisten gängigen Formate für Bilder, Texte, Audio und Video und werden unter /wp-includes/functions.php in der Whitelist-Funktion wp_check_filetype() angegeben. Sollte dein Upload trotz Anpassung der wp-config.php also nicht klappen, kann es sein, dass du deinen gewünschten Dateityp erst dieser Liste hinzufügen musst.

Schriftarten sind in dieser Liste nicht enthalten und führen zum bekannten Fehler beim Upload. Für z.B. eine .ttf-Datei kannst du das in der functions.php deines (Child-)Themes mit folgendem Schnipsel erledigen.

function dwp_mime($mimes) {
    $mimes['ttf'] = 'application/ttf';
    return $mimes;
}
add_filter('upload_mimes', 'dwp_mime');

Möchtest du weitere unbekannte Dateitypen hinzufügen, kannst du alternativ den folgenden Schnipsel verwenden, wodurch die Dateiendungen .svg sowie .ttf und .otf für den Upload freigegeben wird. Gib das gewünschte Dateiformat in einer neuen Zeile an, sollten weitere unbekannte Dateien hinzukommen. Der Vorteil dieser Einzelanpassung ist, dass du diese nicht immer vornehmen musst und die Sicherheit nicht stark beeinträchtigt wird.

function dwp_mimes() {
    $mime_types = array(
        'svg'     => 'image/svg+xml',
        'ttf'     => 'application/ttf',
        'otf'     => 'application/otf',
        'mp4'     => 'application/mp4',
        'pdf'     => 'application/pdf',
    );
    return $mime_types;
}
add_filter( 'upload_mimes', 'dwp_mimes' );

Beachte bitte, dass du die Änderung der wp-config.php weiterhin aktiv (true) haben musst, damit der Upload klappt.
Eine Übersicht der sog. „Mime-Typen“ findest du hier.

Plugins für den SVG-Upload

Wie bei WordPress üblich, existieren für jegliche Herausforderungen dedizierte Plugins. Safe SVG von Daryll ist solch ein Plugin. Im Anschluss lassen sich SVGs wie normale Bilder in der Mediathek betrachten. SVG Support funktioniert ähnlich.

Dennoch, empfehlen wir für solch marginale Änderungen kein Extra-Plugin zu verwenden, denn auch diese bürgen ein gewisses Risiko, welches für jede Website individuell betrachtet werden sollte.