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

Documents pareils