Sanitization Strategies
Principes fondamentaux de sanitization (nettoyage)
La sanitization des noms de fichiers consiste à transformer une entrée potentiellement dangereuse en formats sûrs et prévisibles qui préviennent les vulnérabilités de sécurité.
Techniques de sanitization
graph TD
A[Filename Sanitization] --> B[Whitelist Approach]
A --> C[Blacklist Approach]
A --> D[Encoding Transformation]
A --> E[Character Filtering]
Méthodes de sanitization complètes
1. Filtrage par liste blanche (Whitelist) de caractères
def sanitize_filename(filename):
## Allow only alphanumeric characters, periods, and underscores
allowed_chars = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-')
return ''.join(char for char in filename if char in allowed_chars)
2. Prévention de la traversée de chemin (Path Traversal)
## Remove potential path traversal characters
sanitized_filename=$(echo "$filename" | sed -e 's/\.\.\///g' -e 's/[\/\\\:\*\?\"\<\>\|]//g')
Comparaison des stratégies de sanitization
Stratégie |
Avantages |
Inconvénients |
Liste blanche (Whitelist) |
Contrôle strict |
Peut limiter les noms de fichiers valides |
Liste noire (Blacklist) |
Plus flexible |
Moins sécurisée |
Encodage |
Préserve les caractères |
Implémentation complexe |
Techniques avancées de sanitization
Gestion des caractères Unicode et spéciaux
import unicodedata
import re
def advanced_sanitize(filename):
## Normalize Unicode characters
normalized = unicodedata.normalize('NFKD', filename)
## Remove non-ASCII characters
ascii_filename = normalized.encode('ascii', 'ignore').decode('ascii')
## Replace spaces and remove special characters
sanitized = re.sub(r'[^\w\-_\.]', '', ascii_filename)
return sanitized.lower()
Meilleures pratiques pour les développeurs LabEx
- Toujours valider et nettoyer (sanitize) les entrées de noms de fichiers
- Utiliser une liste blanche stricte lorsque cela est possible
- Mettre en œuvre plusieurs couches de sanitization
- Limiter la longueur des noms de fichiers
- Éviter de stocker des fichiers avec des noms fournis par l'utilisateur dans des répertoires critiques
Considérations de sécurité
flowchart TD
A[Input Filename] --> B{Sanitization Process}
B --> |Whitelist Filtering| C[Safe Filename]
B --> |Validation| D[Length Check]
B --> |Encoding| E[Unicode Normalization]
C --> F[Secure File Handling]
En mettant en œuvre ces stratégies, les développeurs peuvent réduire considérablement le risque de vulnérabilités de sécurité liées aux noms de fichiers dans leurs applications.