Cette méthode d’assainissement des entrées de la base de données oblige les développeurs à définir d’abord tout le code SQL, puis à ne passer que des paramètres spécifiques à la requête SQL : les données saisies ont explicitement une portée limitée qu’elles ne peuvent pas dépasser. Cela permet à la base de données de faire la distinction entre les données qui sont saisies et le code qui doit être exécuté, quel que soit le type de données fournies dans le champ de saisie. Certaines bibliothèques de mappage objet-relationnel sont couramment utilisées à cette fin car certaines versions nettoient automatiquement les entrées de la base de données.
Lors de l’écriture du langage SQL, certains caractères ou mots ont une signification particulière. Par exemple, le caractère « * » signifie « tout ». Pour éviter que les utilisateurs ne saisissent ces caractères par accident ou par malveillance dans une demande d’API adressée à la base de données, les données fournies par l’utilisateur peuvent être échappées. L’échappement d’un caractère est un moyen d’indiquer à la base de données de ne pas l’analyser comme une commande ou une condition mais de le traiter comme une entrée littérale.
Bien qu’il ne s’agisse pas d’une stratégie de sécurité solide en soi, les procédures stockées peuvent contribuer à limiter le risque associé à l’injection SQL. En limitant correctement les autorisations du compte de la base de données qui exécute les requêtes SQL, même le code d’application non robuste qui est vulnérable à l’injection SQL n’aura pas les autorisations nécessaires pour manipuler des tables de base de données non liées. Les procédures stockées peuvent également vérifier le type des paramètres d’entrée, empêchant ainsi la saisie de données qui ne correspondent pas au type que le champ est censé recevoir. Dans les cas où les requêtes statiques sont insuffisantes, les procédures stockées sont généralement à éviter.
En règle générale, dans tous les cas où un site Web doit utiliser du SQL dynamique, il est important de réduire l’exposition à l’injection SQL en limitant les autorisations à la portée la plus étroite possible pour exécuter la requête concernée. Dans sa forme la plus évidente, cela signifie qu’un compte administratif ne devrait en aucun cas exécuter des commandes SQL à la suite d’un appel API provenant d’une requête non autorisée. Si les procédures stockées sont mieux utilisées pour les requêtes statiques, l’application du principe du moindre privilège peut contribuer à réduire les risques des requêtes SQL dynamiques.
Au-delà de toutes ces recommandations, vous pouvez utiliser des outils pour vous protéger. Souvent développés par des sociétés spécialisées comme Cloud Protector, ces outils vous seront très utiles pour déceler les attaques avant qu’elles ne vous impactent. Pour découvrir un aperçu de ces outils, vous pouvez naviguer sur le net ou bien vous rendre sur les pages dédiées des entreprises professionnelles du secteur.
L’expérience en milieu professionnel demande de l’effort et des ressources mentales. En proie aux effets…
À mesure que l’âge avance, il devient essentiel de trouver un logement adapté aux besoins…
Charge Rapide vs Charge Standard : Vaut-il la Peine de Passer à un Chargeur Type…
Disneyland Paris est une destination magique qui attire des millions de visiteurs chaque année. Cependant,…
Vous avez un iPhone 14 et commencez à remarquer des diminutions significatives de l'autonomie ?…
La logistique joue un rôle crucial dans la compétitivité des entreprises modernes. Avec la croissance…