1. Validation des formulaires 2. Faiblesse du contrôle d
Transcription
1. Validation des formulaires 2. Faiblesse du contrôle d
1. Validation des formulaires On ne peut jamais faire confiance aux données entrées par les utilisateurs => solutions : • utiliser les expressions régulières pour filtrer les données • n’accepter que ce qui est attendu (interdire les entrées dangereuses n’est pas suffisant) • être aussi restrictif que possible 2. Faiblesse du contrôle d’accès Limiter l’accès aux données importantes • vérifier les autorisations de l’utilisateur à chaque page sensible (et pas uniquement à une page d’identification) • adopter une bonne arborescence des répertoires et protéger les répertoires contenant les données importantes avec des fichiers .htaccess • éviter de sauvegarder des fichiers php en changeant leur extension 3. Protection des sessions Eviter le piratage de session • toujours demander un login avant d’exécuter une action importante, même si l’utilisateur est déjà identifié • renouveler les sessions avec session_regenerate_id() • utiliser des connections sécurisées (https, SSL) • si le serveur est partagé les autres utilisateurs on accès aux données de session => utiliser la fonction shal1() pour protéger le mdp ou le stocker en bdd 4. Cross Site Scripting (XSS) Envoi de balises html dangereuses (<script>) dans un texte qui sera affiché • htmlspecialchars() pour échapper la syntaxe html • si nécessaire, utiliser les expressions régulières pour empêcher <script> 5. Injection SQL Envoi de commandes SQL via formulaire • par défaut : magic_quotes_gpc (déconseillé pour sa lenteur) • sinon : addslashes() 6. Rapport d’erreurs Empêcher les utilisateurs de lire les messages d’erreur PHP • désactiver display_errors dans php.ini • activer error_log ou développer son propre système de gestion d’erreur 7. Transmission de données Pour les données confidentielles : • préférer HTTPS à HTTP • préférer FTPS à FTP • archiver et stocker hors-ligne les données confidentielles plus anciennes 8. Configuration PHP Editer le php.ini pour plus de sécurité : • register_globals = 0 (désactive l’export des entrées utilisateur comme globales) • safe_mode = 1 (restreint les autorisations des fichiers) • disable_functions : liste de fonctions à désactiver