Dans le processus de transition de mysql_* vers PDO, vous pouvez rencontrer un dilemme avec l'absence d'équivalent direct à mysql_real_escape_string.
Aucun équivalent direct
Techniquement, il existe PDO::quote(), mais son utilisation est limitée. La vraie solution réside dans l'implémentation correcte des instructions préparées.
Les instructions préparées protègent contre les injections
PDO, lorsqu'il est utilisé avec des instructions préparées, protège intrinsèquement contre les injections MySQL sans le besoin d'évasion supplémentaire. Les instructions préparées lient les paramètres d'entrée à des espaces réservés, empêchant ainsi les entrées malveillantes d'être interprétées comme des commandes SQL.
Exemple : Utilisation d'instructions préparées dans PDO
Le code suivant illustre une base de données sécurisée requête à l'aide d'instructions préparées :
<code class="php"><?php $db = new \PDO("mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]); if ($_POST && isset($_POST['color'])) { $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); $stmt->execute(array($_POST['color'])); $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC); var_dump($cars); } ?></code>
Avantages des instructions préparées
Considérations supplémentaires
Conclusion
Les instructions préparées dans PDO fournissent un mécanisme robuste et sécurisé pour les requêtes de base de données sans avoir besoin de fonctions telles que mysql_real_escape_string. En adoptant cette approche, vous pouvez empêcher efficacement les injections SQL et maintenir l'intégrité de vos données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!