Applez Nous: +41 22 518 70 00
L’OWASP (Open Web Application Security Project) est une fondation mondiale indépendante à but non lucratif dédiée à l’amélioration de la sécurité logicielle. Son classement OWASP Top 10 recense périodiquement les dix risques de sécurité les plus critiques et répandus affectant les applications et API web modernes, servant de référence mondiale aux auditeurs et aux développeurs.
L’injection survient lorsqu’une donnée non fiable fournie par un utilisateur est directement concaténée dans une commande SQL interprétée par le moteur de base de données sans assainissement préalable :
// EXEMPLE DE CODE VULNÉRABLE (CONCATÉNATION DIRECTE) :
$requete = "SELECT * FROM clients WHERE identifiant = '" . $_POST['user'] . "' AND mot_de_passe = '" . $_POST['pass'] . "';";
// ENTRÉE MALVEILLANTE INJECTÉE :
// user = admin' --
// La requête devient : SELECT * FROM clients WHERE identifiant = 'admin' -- ' AND ...
// Tout le contrôle de mot de passe est ignoré en tant que commentaire SQL !
Remédiation définitive : Utilisation systématique de requêtes préparées avec liaisons de paramètres (Prepared Statements / Parameterized Queries) ou d’un ORM sécurisé. Avec les requêtes préparées, le moteur SQL traite la donnée strictement comme une chaîne de caractères et jamais comme du code exécutable.
Classée en tête de l’OWASP Top 10, la rupture de contrôle d’accès survient lorsqu’une application omet de vérifier que l’utilisateur connecté possède les droits légitimes pour accéder à un objet ou exécuter une fonction spécifique :
/api/v1/factures/1042. Un utilisateur malveillant connecté sous son propre compte modifie l’identifiant numérique dans l’URL pour demander /api/v1/factures/1041. Si le serveur ne valide pas que la facture 1041 appartient bien au compte connecté, les données d’un tiers sont divulguées./admin/utilisateurs/supprimer) avec une simple session d’utilisateur standard non privilégié.Bonne pratique pédagogique : Tout contrôle d’accès doit être exécuté et validé exclusivement côté serveur. Tout contrôle réalisé uniquement dans le navigateur client (JavaScript désactivé, boutons masqués en CSS) est trivialement contournable par n’importe quel attaquant muni d’outils d’interception HTTP.