Les principales failles de sécurité des applications web actuelles, telles que recensées par l'OWASP: principes, parades et bonnes pratiques de développement( Télécharger le fichier original )par Guillaume HARRY Conservatoire national des arts et métiers - Ingénieur 2012 |
4.1.3 Parade et bonnes pratiquesLes différentes attaques citées précédemment reposent principalement sur l'utilisation de caractères spécifiques qui permettent de mettre en commentaire des portions de code et d'insérer du code frauduleux. Il est cependant rare que l'application ait besoin d'accepter les caractères suivant. & ~ " # ' { } ( [ ] ( ) - | ` _ \ ^ @ \ * / . < > , ; : ! $ Figure 9 - Caractères spéciaux communément utilisés dans les attaques d'injection Cependant les applications Web de gestion de contenu comme les forums doivent les accepter, notamment les forums utilisés par les développeurs pour partager du code. Dans ce cas, il faut transformer aux moins les caractères suivants en code HTML avant de les stocker dans la base de données. L'affichage de l'information ne sera pas différent pour l'utilisateur, mais les données seront plus sûres. Bien qu'un site puisse subir différents types d'attaques par injection, il suffit de vérifier que les caractères utilisés sont ceux attendus. Ce contrôle doit être effectué au niveau du client grâce à JavaScript et au niveau du serveur lorsque les paramètres sont récupérés pour fermer la faille de sécurité. Par exemple MySQL offre une fonctionnalité qui permet de transformer ces caractères. <?php$nouvelleValeur=htmlspecialchars($valeurParametre,ENT_QUOTES); ?> Figure 10 - Script PHP pour remplacer les caractères par le code HTML De plus il faut vérifier que les valeurs sont bien du type et du format attendu (longueur, intervalle de valeur, ...) L'ANSSI porte une attention particulière aux outils automatiques d'exploitation des failles SQL dans son bulletin de sécurité CERTA-2011-ACT-045. Pour déterminer si un site est victime de ce type d'agression, il faut vérifier dans les journaux d'activité du serveur http qu'il n'y a pas d'évènement inhabituel, tel qu'un nombre de requêtes http anormalement élevé ou des requêtes ayant pour paramètres des valeurs inappropriées. |
|