« Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité. » — Comment corriger cette erreur WordPress (2026)
TL;DR
Votre extension ou type MIME ne figure pas sur la liste blanche de WordPress. Solution propre : ajouter un filtre upload_mimes. Pour les photos HEIC d'iPhone : convertir en JPEG sur l'appareil avec SnapPress.
Réponse courte : Cette erreur signifie que WordPress n'a pas reconnu l'extension du fichier ou le type MIME comme l'un de ses formats autorisés. La solution permanente la plus propre est un petit filtre upload_mimes dans functions.php ou dans un plugin personnalisé. Si vous téléversez des photos HEIC depuis un iPhone, le chemin le plus simple est de les convertir en JPEG sur l'appareil avant le téléversement, avec un outil comme SnapPress. N'activez jamais ALLOW_UNFILTERED_UPLOADS dans wp-config.php comme solution permanente : cela désactive toutes les vérifications de sécurité de téléversement de WordPress.
Si vous êtes tombé sur « Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité » dans WordPress, vous n'êtes pas seul. C'est l'un des messages d'erreur WordPress les plus recherchés au monde, et sa formulation est trompeuse : WordPress n'a rien détecté de malveillant. Il a simplement consulté une liste blanche figée, et votre extension de fichier ou votre type MIME n'y figure pas.
Ce guide explique pourquoi l'erreur se produit, présente les quatre méthodes éprouvées en production pour la corriger définitivement, les compromis de sécurité de chaque approche et une solution spécifique par type de fichier. À la fin, vous saurez exactement quelle méthode correspond à votre situation et comment éviter de casser votre site au passage.
Pourquoi cette erreur se produit (la liste blanche des types MIME)
Chaque téléversement WordPress passe par la fonction wp_check_filetype_and_ext(). Cette fonction compare deux éléments à une liste blanche figée :
- L'extension du fichier (la partie après le point dans le nom du fichier)
- Le type MIME détecté par l'extension
finfode PHP
Si l'un des deux ne figure pas dans la liste renvoyée par get_allowed_mime_types(), le téléversement est rejeté avec « Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité. » La liste est définie dans wp-includes/functions.php et contient environ 60 entrées par défaut : images courantes, vidéo, audio, archives et formats de documents.
Le cadrage « sécurité » existe parce que la raison d'être originelle de la liste blanche était d'empêcher un attaquant de téléverser du code exécutable (fichiers PHP, scripts shell) que WordPress servirait ensuite via une URL. Dans ce sens étroit, le filtre constitue une véritable frontière de sécurité. Mais le même filtre bloque une longue liste de formats légitimes qui n'ont tout simplement pas été inclus dans la liste du cœur :
- HEIC de l'iPhone (ajouté dans WordPress 6.7, fin 2024)
- WebP (ajouté dans WordPress 5.8, 2021)
- AVIF (ajouté dans WordPress 6.5, mars 2024)
- SVG (jamais ajouté — nécessite un plugin ou un filtre)
- Polices WOFF/WOFF2 (jamais ajoutées)
- STL, OBJ, GLB, formats de modèles 3D (jamais ajoutés)
Si votre version de WordPress est antérieure à l'ajout d'un format donné, ou si votre hébergeur exécute un build personnalisé qui supprime les types MIME les plus récents, vous rencontrez l'erreur même sur un format censé être pris en charge.
Contournement temporaire : vérifiez d'abord l'extension et le fichier
Avant de modifier la configuration du serveur, écartez deux causes simples :
L'extension est incorrecte ou manquante
Les fichiers exportés depuis des applications de messagerie perdent parfois leur extension ou en récupèrent une générique comme .bin. Faites un clic droit sur le fichier, renommez-le avec la bonne extension (.jpg, .png, etc.) et réessayez le téléversement. Si cela fonctionne, le contenu du fichier était sain ; seule l'extension posait problème.
Le fichier est corrompu
Si votre navigateur a téléchargé le fichier depuis un chat ou un e-mail et que le téléchargement a été interrompu, le fichier peut être tronqué. Le finfo de PHP détectera le mauvais type MIME : le fichier ressemble à du bruit binaire plutôt qu'à une image. Retéléchargez l'original depuis la source et réessayez.
Ces deux vérifications prennent 30 secondes et résolvent environ 20 % des cas de « ce type de fichier n'est pas autorisé » que je rencontre. Les 80 % restants sont de vrais problèmes de liste blanche qui nécessitent l'une des solutions permanentes ci-dessous.
Les 4 solutions permanentes
Solution 1 : Ajouter le type MIME via le filtre upload_mimes (recommandé)
C'est la solution de production la plus propre. Ajoutez ce qui suit au functions.php de votre thème enfant, ou — mieux — à un petit plugin personnalisé pour que le changement survive aux mises à jour du thème :
<?php
add_filter('upload_mimes', function($mimes) {
$mimes['heic'] = 'image/heic';
$mimes['heif'] = 'image/heif';
return $mimes;
});
add_filter('wp_check_filetype_and_ext', function($data, $file, $filename, $mimes) {
$filetype = wp_check_filetype($filename, $mimes);
if (in_array($filetype['ext'], ['heic', 'heif'], true)) {
$data['ext'] = $filetype['ext'];
$data['type'] = $filetype['type'];
}
return $data;
}, 10, 4); Remplacez heic et image/heic par l'extension et le type MIME dont vous avez besoin. Le premier filtre ajoute le type à la liste blanche. Le second corrige un bug subtil : sur de nombreux serveurs, le module finfo de PHP signale les types MIME inhabituels comme application/octet-stream, ce qui pousse wp_check_filetype_and_ext() à rejeter le téléversement même si l'extension est autorisée. Le second filtre force la reconnaissance lorsque l'extension du fichier correspond.
Pour une explication plus approfondie spécifiquement consacrée au HEIC, consultez WordPress Allowed MIME Types: How to Enable HEIC Uploads (guide 2026, en anglais).
Solution 2 : Utiliser un plugin (WP Add Mime Types)
Si vous ne voulez pas modifier de PHP, le plugin WP Add Mime Types (gratuit, plus de 80 000 installations, activement maintenu depuis 2014) vous offre un panneau de réglages à deux colonnes : extension et type MIME. Ajoutez une ligne, enregistrez, c'est fait. Le plugin exécute le même filtre upload_mimes en coulisses.
Deux alternatives éprouvées en production :
- File Upload Types by WPForms — interface à cases à cocher avec des entrées prédéfinies pour HEIC, WebP, AVIF, SVG et plus de 40 autres formats. Idéal si vous ne connaissez pas la chaîne du type MIME par cœur.
- Disable Real MIME Check — un plugin mono-fonction qui désactive l'étape de validation
finfode PHP. Utile dans les cas limites où l'extension figure sur la liste blanche mais oùfinfosignale mal le type MIME. À utiliser avec parcimonie ; la contrepartie est une validation affaiblie.
Solution 3 : ALLOW_UNFILTERED_UPLOADS dans wp-config.php (avancé, avec avertissement)
WordPress dispose d'une trappe de secours dans wp-config.php :
define('ALLOW_UNFILTERED_UPLOADS', true); Avec cette constante définie, les administrateurs peuvent téléverser n'importe quel type de fichier, y compris des scripts PHP. Toutes les vérifications de type MIME sont contournées.
Ne l'utilisez pas en production. Cette constante désactive toutes les vérifications de sécurité de téléversement de WordPress. Un attaquant qui compromet n'importe quel compte de niveau administrateur peut téléverser des fichiers PHP directement dans wp-content/uploads et les exécuter. Même les configurations qui semblent sûres aujourd'hui ont souvent un compte « abonné-avec-rôle-admin » oublié, hérité d'un vieux plugin ou d'une importation.
Le seul usage légitime est un environnement de développement local où vous déboguez le comportement de téléversement. Commentez la ligne avant de pousser vers le staging.
Solution 4 : Convertir sur l'appareil avec SnapPress (pour les utilisateurs d'iPhone)
Pour les téléversements de photos d'iPhone en particulier, la solution la plus résiliente consiste à convertir le HEIC en JPEG sur l'appareil, avant même que le fichier n'atteigne votre serveur. SnapPress lit le HEIC depuis votre photothèque, le décode avec le pipeline d'image iOS qu'Apple maintient à chaque version d'iOS, et téléverse un JPEG vers votre médiathèque WordPress via l'API REST.
Votre functions.php reste intact. Votre filtre upload_mimes reste intact. Le fichier qui arrive sur votre serveur est un JPEG standard que toutes les installations WordPress prennent en charge depuis 2003.
C'est la voie que je recommande à quiconque gère plusieurs sites WordPress ou n'est pas à l'aise avec la modification de PHP. La contrepartie : elle ne résout que le cas du HEIC d'iPhone — pour les autres types de fichiers, vous avez toujours besoin de l'une des solutions 1 à 3.
Solutions spécifiques par type de fichier
Le type MIME exact compte. Voici les entrées éprouvées en production pour les formats les plus courants qui déclenchent « Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité. »
HEIC (photos d'iPhone)
$mimes['heic'] = 'image/heic';
$mimes['heif'] = 'image/heif'; Ajoutez toujours les deux. Les iPhone produisent occasionnellement des fichiers .heif pour les séquences d'images et les rafales. Une fois le filtre ajouté, le téléversement WordPress aboutit — mais la plupart des navigateurs des visiteurs ne savent pas afficher le HEIC, vous avez donc aussi besoin d'une conversion côté serveur (ShortPixel) ou côté client (SnapPress). Consultez Photos HEIC d'iPhone et WordPress pour l'histoire complète.
WebP
$mimes['webp'] = 'image/webp'; WordPress 5.8 (mi-2021) a ajouté WebP à la liste blanche du cœur. Si votre version de WordPress est à jour, ce filtre est superflu. Si vous êtes sur un build plus ancien ou chez un hébergeur avec des restrictions personnalisées, le filtre débloque le téléversement de WebP.
SVG
$mimes['svg'] = 'image/svg+xml';
$mimes['svgz'] = 'image/svg+xml'; Ne vous arrêtez pas au filtre. SVG est du XML et peut contenir du JavaScript inline qui s'exécute dans les navigateurs des administrateurs. Installez systématiquement le plugin Safe SVG (gratuit), qui à la fois autorise le SVG et assainit les fichiers entrants via la bibliothèque svg-sanitizer, en supprimant les balises script, les gestionnaires d'événements et les références à des entités externes. Si seuls des designers de confiance doivent téléverser du SVG, encadrez le filtre d'une vérification current_user_can('manage_options').
AVIF
$mimes['avif'] = 'image/avif'; WordPress 6.5 (mars 2024) a ajouté AVIF à la liste blanche du cœur. Le filtre n'est nécessaire que sur les installations plus anciennes ou chez des hébergeurs personnalisés. L'AVIF compresse environ 20 % de mieux que le HEIC à qualité perceptuelle équivalente et bénéficie d'une prise en charge navigateur plus large, ce qui en fait le meilleur format de diffusion si votre serveur dispose de libavif.
Vidéo MP4
$mimes['mp4'] = 'video/mp4';
$mimes['m4v'] = 'video/mp4';
$mimes['mov'] = 'video/quicktime'; Ces formats figurent généralement sur la liste blanche du cœur, mais si vous obtenez l'erreur spécifiquement sur du MP4, c'est souvent parce que le type MIME du fichier est détecté comme video/x-m4v ou application/octet-stream. Ajoutez le filtre wp_check_filetype_and_ext de la Solution 1 pour forcer la reconnaissance.
Archives ZIP
$mimes['zip'] = 'application/zip';
$mimes['7z'] = 'application/x-7z-compressed'; Le ZIP figure par défaut sur la liste blanche du cœur, mais certains plugins de sécurité (Wordfence, Sucuri) la surchargent, car les ZIP peuvent contenir du contenu exécutable. Ajoutez le type à la liste blanche dans les réglages du plugin en plus du filtre WordPress.
Considérations de sécurité (pourquoi la restriction existe par défaut)
WordPress restreint les types de fichiers par défaut pour une raison centrale : les fichiers PHP dans wp-content/uploads peuvent être exécutés comme du code sur la plupart des configurations de serveur. Si WordPress acceptait n'importe quelle extension, un attaquant compromettant n'importe quel compte d'auteur ou de contributeur pourrait téléverser un shell .php, appeler son URL et exécuter du code arbitraire sur votre serveur.
La liste blanche est la défense la moins coûteuse. Même si toutes les autres couches de sécurité échouent — réutilisation de mot de passe, vulnérabilité de plugin, compromission de la chaîne d'approvisionnement —, le filtre de téléversement empêche le PHP d'atteindre le répertoire des uploads.
Trois principes lorsque vous enrichissez la liste blanche :
- N'ajoutez que ce dont vous avez réellement besoin. Si vous téléversez du HEIC une fois par mois, ajoutez le HEIC. N'autorisez pas préventivement tous les formats dont vous pourriez un jour avoir besoin.
- N'autorisez jamais les extensions PHP, exécutables ou de script.
.php,.phtml,.exe,.sh,.cgi,.pl— aucune n'a sa place danswp-content/uploads, en aucune circonstance. - Assainissez les formats qui acceptent du contenu embarqué. SVG (JavaScript), PDF (actions JavaScript), HTML (tout). Utilisez un plugin d'assainissement ou convertissez vers un format d'image plat au téléversement.
Diagnostiquer l'erreur quand la Solution 1 ne fonctionne pas
Vous avez ajouté le filtre, téléversé le fichier, et vous voyez toujours « Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité. » Trois points à vérifier :
Le filtre est au mauvais endroit
Assurez-vous que le fichier contenant le filtre est réellement chargé. Si vous l'avez placé dans le functions.php de votre thème enfant mais que le thème parent est actif, le snippet ne s'exécute pas. Déplacez-le dans un plugin personnalisé pour supprimer la dépendance au thème.
Un plugin de sécurité surcharge la liste blanche
Wordfence, Sucuri, iThemes Security et les plugins similaires ajoutent leur propre validation de téléversement par-dessus le cœur de WordPress. Ajoutez le type MIME à la liste blanche dans les réglages du plugin de sécurité, en plus de votre filtre upload_mimes.
Le finfo de PHP signale le mauvais type MIME
C'est l'échec silencieux le plus fréquent. L'extension du fichier figure sur la liste blanche, mais le module finfo de PHP renvoie application/octet-stream au lieu du type MIME attendu. WordPress constate une incohérence et rejette. Le filtre wp_check_filetype_and_ext de la Solution 1 couvre ce cas. Vérifiez qu'il est inclus aux côtés du filtre upload_mimes, et non séparément.
Pour une liste de diagnostic plus large sur les échecs de téléversement WordPress, consultez Cannot Upload Images to WordPress? 8 Causes and How to Fix Each One (en anglais).
Téléversements de photos depuis l'iPhone : le flux de travail qui évite entièrement cette erreur
Tout ce qui précède concerne le téléversement direct de HEIC brut, SVG, AVIF et autres formats dans la médiathèque WordPress. Pour les flux de photos d'iPhone en particulier, il existe un chemin plus simple : convertir sur l'appareil avant le téléversement.
SnapPress lit le HEIC depuis votre photothèque, le décode avec le pipeline d'image iOS qu'Apple maintient et met à jour à chaque version d'iOS, et téléverse un JPEG vers votre médiathèque WordPress via l'API REST. Comme le fichier qui arrive est un JPEG standard, vous ne verrez plus jamais « Désolé, ce type de fichier n'est pas autorisé pour des raisons de sécurité » — ni sur ce site, ni sur aucun autre site WordPress que vous connectez.
Pour les flux de publication en masse de l'iPhone vers WordPress, consultez le comparatif dans Téléverser des images en masse vers WordPress depuis votre téléphone : le guide complet et le tour d'horizon des applications dans Les 5 meilleures applications de téléversement de photos WordPress comparées.
Récapitulatif
- L'erreur signifie que votre extension de fichier ou votre type MIME ne figure pas sur la liste blanche WordPress renvoyée par
get_allowed_mime_types(). - Solution la plus propre : ajouter un filtre
upload_mimesdans un plugin personnalisé (Solution 1). - Solution sans code : plugin WP Add Mime Types ou File Upload Types (Solution 2).
- Jamais comme solution permanente :
ALLOW_UNFILTERED_UPLOADSdanswp-config.php(Solution 3). - Flux HEIC d'iPhone : convertir sur l'appareil avec SnapPress pour que le fichier soit un JPEG avant d'atteindre WordPress (Solution 4).
Si vous publiez régulièrement des photos d'iPhone sur WordPress, la conversion sur l'appareil élimine entièrement cette classe d'erreurs. Commencez gratuitement avec SnapPress, connectez-vous via le plugin WordPress SnapPress Connect, et la prochaine fois que vous sélectionnerez des photos dans la feuille de partage, elles seront téléversées en JPEG — sans filtre, sans plugin, sans modification du wp-config.php côté serveur.
Questions fréquentes
Pourquoi WordPress bloque-t-il certains types de fichiers ?
WordPress valide chaque téléversement via wp_check_filetype_and_ext() en le comparant à une liste blanche figée renvoyée par get_allowed_mime_types(). Le message « raisons de sécurité » signifie que votre extension de fichier ou votre type MIME ne figure pas sur cette liste. L'objectif d'origine était d'empêcher un attaquant de téléverser des fichiers PHP exécutables déguisés en images, mais le même filtre bloque des formats légitimes comme HEIC, AVIF et SVG, qui n'étaient tout simplement pas dans la liste du cœur au moment de la sortie de votre version de WordPress. La solution consiste soit à ajouter le type MIME via un filtre, soit à convertir le fichier dans un format autorisé avant le téléversement.
Est-il sûr d'autoriser des types de fichiers personnalisés ?
Globalement oui, mais soyez sélectif. Les formats d'image (HEIC, AVIF, WebP) et les conteneurs multimédias (MP4, MOV) peuvent être ajoutés sans risque au filtre upload_mimes : ils ne peuvent pas être exécutés comme du code. SVG est le seul format d'image qui demande de la prudence, car c'est du XML pouvant contenir du JavaScript inline ; si vous autorisez le SVG, installez aussi un plugin d'assainissement comme Safe SVG. N'utilisez jamais ALLOW_UNFILTERED_UPLOADS dans wp-config.php comme solution permanente. Cette constante désactive toutes les vérifications de sécurité de téléversement de WordPress, y compris celles qui bloquent le téléversement direct de PHP.
Quelle est la meilleure option : filtre PHP ou plugin ?
Pour un ou deux types MIME que vous maîtrisez, le filtre upload_mimes dans le functions.php d'un thème enfant ou dans un petit plugin personnalisé est le plus propre : cinq lignes, aucune surcharge de plugin, et il survit aux mises à jour du thème si vous passez par la voie du plugin. Pour cinq types de fichiers ou plus, ou pour les utilisateurs qui ne modifient pas le PHP, un plugin comme WP Add Mime Types ou File Upload Types est le bon choix. L'impact sur les performances est identique, car les deux exécutent le même filtre WordPress en coulisses. Choisissez selon votre aisance à modifier du code, pas selon la vitesse.
Comment autoriser les fichiers HEIC de l'iPhone ?
Ajoutez à votre functions.php ou à un plugin personnalisé un filtre upload_mimes qui ajoute 'heic' => 'image/heic' et 'heif' => 'image/heif'. WordPress 6.7 a ajouté HEIC à la liste blanche du cœur, donc sur une installation 6.7+ récente, ce filtre peut déjà être superflu — mais beaucoup d'hébergeurs mutualisés livrent des builds WordPress personnalisés qui suppriment encore les types MIME les plus récents. La voie maligne pour les photos d'iPhone est de convertir en JPEG sur l'appareil avec un outil comme SnapPress, afin que le fichier qui arrive sur votre serveur soit un JPEG standard qu'aucune installation WordPress n'a jamais rejeté.
Comment autoriser les fichiers SVG en toute sécurité ?
Ne vous contentez pas d'ajouter image/svg+xml au filtre upload_mimes. SVG est du XML et peut contenir du JavaScript inline ou des références externes qui s'exécutent dans les navigateurs des administrateurs. Installez Safe SVG (plugin gratuit), qui à la fois autorise le type MIME SVG et assainit les fichiers entrants via la bibliothèque svg-sanitizer, en supprimant les balises script, les gestionnaires d'événements et les références à des entités externes. Si seuls des designers de confiance doivent téléverser du SVG, vous pouvez aussi restreindre le SVG aux administrateurs en combinant le filtre avec une vérification current_user_can('manage_options').
Que faire si la modification de functions.php casse le site ?
D'abord, pas de panique. L'écran blanc vient presque toujours d'un point-virgule manquant ou d'une accolade non fermée dans le snippet que vous avez ajouté. Connectez-vous en SFTP ou via le gestionnaire de fichiers de votre hébergeur, modifiez wp-content/themes/votre-theme/functions.php, supprimez le snippet défectueux, enregistrez, et le site revient. Si vous ne pouvez pas modifier les fichiers, le panneau de contrôle de tout hébergeur propose une option « journal d'erreurs PHP en un clic » ou « réinitialiser le thème ». À l'avenir, modifiez functions.php via un thème enfant ou — mieux — placez vos filtres personnalisés dans un petit plugin dédié, afin qu'une erreur de code désactive un plugin au lieu de casser tout le site.