Download the PHP package it-empower-solutions/secure-upload without Composer
On this page you can find all versions of the php package it-empower-solutions/secure-upload. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download it-empower-solutions/secure-upload
More information about it-empower-solutions/secure-upload
Files in it-empower-solutions/secure-upload
Package secure-upload
Short Description Validation et sécurisation d'uploads pour PHP 8.1+, Laravel et Symfony.
License MIT
Homepage https://it-empower.com
Informations about the package secure-upload
IT Empower Secure Upload
Validation défensive de fichiers uploadés pour PHP 8.1+, sans déplacer ni stocker les fichiers. Le cœur ne dépend d’aucun framework et des intégrations optionnelles sont fournies pour Laravel et Symfony.
Ce package est développé et maintenu par IT EMPOWER SOLUTIONS, société spécialisée dans la conception, la sécurisation et l’accompagnement de solutions web.
Fonctionnalités
- limite de taille vérifiée sur le fichier réel ;
- liste blanche d’extensions ;
- détection MIME réelle avec
finfo; - correspondance stricte extension/MIME ;
- blocage d’extensions, types MIME et signatures exécutables ;
- détection des doubles extensions dangereuses (
facture.php.jpg) ; - génération de noms aléatoires sûrs avec
random_bytes; - contrôle des dimensions et du nombre de pixels des images ;
- SVG désactivé par défaut et inspection de DOCTYPE, ENTITY, scripts, événements, URI JavaScript, data URI et ressources distantes lorsqu’il est activé ;
- résultat typé avec codes d’erreur et API
validate()/assert(); - prise en charge directe du format
$_FILES.
Le package ne déplace jamais un fichier uploadé. La décision de stockage, le chemin final, les permissions et la politique de conservation restent sous le contrôle de l’application.
Installation
Prérequis : PHP 8.1 ou supérieur et l’extension fileinfo. L’extension GD est recommandée pour garantir l’inspection des images matricielles dans tous les environnements.
Utilisation en PHP
Pour un fichier temporaire déjà identifié :
declaredSize est optionnel. S’il est fourni, il est comparé à la taille réellement lue sur disque.
Validation avec exception
Générer uniquement un nom sûr
Le nom d’origine n’est jamais réutilisé. Conservez-le uniquement comme métadonnée après l’avoir échappé pour le contexte d’affichage.
Configuration
Si vous ajoutez une extension, déclarez aussi ses types MIME acceptés dans mimeTypes. Une extension sans correspondance MIME est refusée.
SVG
Les SVG sont des documents actifs et restent interdits par défaut. Pour les accepter :
L’inspection intégrée rejette les principales constructions actives et les chargements externes. Elle constitue une barrière défensive, pas un moteur complet de nettoyage XML/CSS. Pour afficher des SVG fournis par des tiers, servez-les depuis un domaine isolé, avec Content-Disposition: attachment lorsque l’affichage n’est pas nécessaire, une CSP restrictive et X-Content-Type-Options: nosniff.
Laravel
L’auto-discovery enregistre le ServiceProvider et la façade SecureUpload. Publiez la configuration :
Puis utilisez l’injection :
Ou la façade :
Symfony
Installez les composants nécessaires à l’intégration :
Enregistrez le bundle si Symfony Flex ne le fait pas :
Configuration :
UploadValidator est autowirable. Le service public it_empower_secure_upload.validator est aussi disponible.
Codes d’erreur principaux
file_unreadable,size_unavailable,file_too_large,size_mismatch;extension_missing,extension_not_allowed,double_extension;executable_extension,executable_mime,executable_content;mime_unavailable,mime_mismatch;image_invalid,image_dimensions_exceeded;svg_not_allowed,svg_invalid,svg_doctype,svg_entity,svg_script,svg_event_handler,svg_javascript,svg_external_uri,svg_css_url;upload_error.
Recommandations de sécurité
La validation d’un upload doit être complétée par une défense en profondeur :
- stocker hors de la racine web lorsque possible ;
- ne jamais exécuter les fichiers déposés et désactiver les interpréteurs dans le répertoire de stockage ;
- imposer un nom généré et une extension validée ;
- servir un
Content-Typecontrôlé etX-Content-Type-Options: nosniff; - appliquer authentification, autorisation, quotas, journalisation et analyse antivirus selon le risque ;
- réencoder les images lorsque le contexte l’exige ;
- protéger les formulaires contre les requêtes forgées et limiter les délais d’upload.
Pour un audit ou une intégration adaptée à votre contexte, contactez IT EMPOWER SOLUTIONS à [email protected].
Exemples et tests
Le dossier examples contient des exemples PHP, Laravel et Symfony complets. Pour exécuter la suite :
Licence
MIT. Voir LICENSE.
© 2026 IT EMPOWER SOLUTIONS.
All versions of secure-upload with dependencies
ext-fileinfo Version *