⊗ppSpPDQu 58 of 83 menu

Problèmes de requêtes PDO en PHP

Comme vous devez déjà le savoir, les requêtes SQL sont vulnérables aux injections SQL. L'extension PDO est conçue pour lutter contre les injections, mais par défaut, elle ne le fait pas automatiquement.

Examinons le problème avec un exemple. Supposons que nous ayons la requête suivante, dans laquelle une variable est insérée :

<?php $sql = "SELECT * FROM users WHERE id=$id"; $res = $pdo->query($sql); ?>

Supposons que notre variable provienne de l'extérieur, par exemple, d'un paramètre GET. Pour simplifier, cependant, définissons simplement sa valeur manuellement. Nous nous attendons à une valeur numérique, par exemple, comme celle-ci :

<?php $id = 1; ?>

Un hacker malveillant, cependant, pourrait transmettre la valeur suivante (supposons que nous ayons un champ role) :

<?php $id = '-1 OR role="admin"'; ?>

Il en résulte que nous voulions la requête suivante :

<?php $sql = "SELECT * FROM users WHERE id=1"; $res = $pdo->query($sql); ?>

Mais nous avons obtenu la suivante, qui récupère l'administrateur du site :

<?php $sql = "SELECT * FROM users WHERE id=-1 OR role="admin""; $res = $pdo->query($sql); ?>

Pour éviter cette situation, PDO dispose d'un mécanisme spécial, appelé requêtes préparées. Nous les examinerons dans la prochaine leçon.

Effectuez intentionnellement une injection SQL sur votre base de données.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser