Table des matières
Il existe de nombreux types d'attaques que nous pouvons recevoir dans nos applications, l'une des plus courantes et qui peut générer une grande quantité de dégâts est la Injection SQLCette attaque consiste à trouver des vulnérabilités dans la manière dont nous traitons les requêtes sur les bases de données pour extraire des informations ou insérer des valeurs pouvant affecter sa fonctionnalité.Afin de nous protéger contre ce type d'attaque, nous devons d'abord savoir en quoi il consiste, de cette façon nous pouvons apprendre quel type de précautions nous devons prendre.
Comme nous l'avons mentionné, cette attaque fait que notre base de données ne fonctionne pas correctement, pour cela l'attaquant introduit des données qui font échouer nos requêtes en fonction de certaines vulnérabilités, avec cela l'attaquant peut essayer obtenir les schémas de nos tableaux ou saisir des données pouvant compromettre le fonctionnement, telles que entrez un utilisateur pour accéder à la section administrative de notre application.
L'un des moyens les plus courants est que nous entrions les paramètres directement au fur et à mesure que nous les recevons des contrôleurs, par exemple nous avons une recherche par catégories et nous recevons du contrôleur l'identifiant d'une catégorie à rechercher, si elle passe directement sans la nettoyer peut générer une attaque qui montre à l'attaquant toutes les catégories existantes.
Regardons le code non sécurisé suivant :
AGRANDIR
Nous pouvons voir comment dans le ligne 6 nous construisons la condition de recherche puis dans le ligne 10 On le passe directement à la méthode qui construit la requête, un œil inexpérimenté peut ne pas voir de problème, mais si un attaquant rentre le paramètre suivant : "1 ou 1 = 1" vous pourriez obtenir la liste de toute notre table.Comment se protéger ?La façon de se protéger dans ce cas passe par deux étapes de base, la premier est que nous ne pouvons pas autoriser l'exécution des données directement au fur et à mesure que nous les recevons, pour cela, avant la requête, nous devons nettoyer le paramètre avec une méthode qui recherche les caractères illégaux et en cas de les trouver, envoyer l'utilisateur à une page 404 ou Page non trouvée.
Voyons dans le code suivant comment nous pouvons filtrer ce que nous recevons :
Ici, nous passons en revue avec un expression régulière Que seuls les chiffres soient ce que notre contrôleur reçoit, sinon nous envoyons un message, chacun peut faire sa version, mais l'important est de contrôler ce que notre application va recevoir.
Le deuxième étape pour éviter les attaques est ne fonctionne pas avec le joker "*" et limitons toujours les requêtes lorsque nous attendons un enregistrement, nous évitons ainsi d'exposer toutes les données au cas où quelqu'un parviendrait à dépasser nos prévisions.
Attraper les exceptionsEnfin, si un paramètre illégal pénètre dans notre application, nous devons éviter à tout prix qu'une trace de l'erreur ne sorte, car il contient des données sensibles de notre installation et peut être utilisé contre nous, nous devons donc toujours nous assurer de capturer le des exceptions et envoyer un message personnalisé qui ne contient pas beaucoup de détails, car ces détails peuvent être vus dans l'environnement de développement.
Comme nous avons pu le voir, connaître les attaques nous donne une perspective différente sur la façon dont nous pouvons protéger notre application et comment faire pour donner plus de sécurité à nos utilisateurs.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif