Maison >base de données >tutoriel mysql >Comment puis-je utiliser en toute sécurité l'extension MySQL en PHP pour éviter les injections SQL et autres pièges ?
Requêtes MySQL sécurisées avec l'extension MySQL
Introduction
Malgré la prévalence du PDO, la famille de fonctions mysql_* reste un choix courant pour l'interaction avec les bases de données PHP. Bien que cette bibliothèque soit parfaitement sûre lorsqu'elle est utilisée correctement, son utilisation entraîne souvent des problèmes de sécurité et techniques. Cet article fournit un exemple de code parfait qui montre comment utiliser l'extension MySQL en toute sécurité.
Éviter les pièges courants
Les fonctions mysql_* sont connues pour plusieurs problèmes courants, notamment :
Exemple de code
L'exemple de code suivant implémente un script PHP simple qui met à jour un ligne de table de base de données basée sur des variables POST tout en atténuant les risques ci-dessus :
<?php header('Content-type: text/html; charset=utf-8'); error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); $config = array( 'host' => '127.0.0.1', 'user' => 'my_user', 'pass' => 'my_pass', 'db' => 'my_database' ); $connection = @mysql_connect($config['host'], $config['user'], $config['pass']); if (!$connection) { trigger_error('Unable to connect to database: ' . mysql_error(), E_USER_ERROR); } if (!mysql_select_db($config['db'])) { trigger_error('Unable to select db: ' . mysql_error(), E_USER_ERROR); } if (!mysql_set_charset('utf8')) { trigger_error('Unable to set charset for db connection: ' . mysql_error(), E_USER_ERROR); } $result = mysql_query( 'UPDATE tablename SET name = "' . mysql_real_escape_string($_POST['name']) . '" WHERE id = "' . mysql_real_escape_string($_POST['id']) . '"' ); if ($result) { echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') . ' updated.'; } else { trigger_error('Unable to update db: ' . mysql_error(), E_USER_ERROR); } ?>
Clé Caractéristiques
Conclusion
Cet exemple de code fournit une base solide pour des requêtes MySQL sécurisées utilisant la famille de fonctions mysql_*. Il résout les pièges courants en implémentant une gestion appropriée des erreurs, en empêchant l'injection SQL et en prenant en charge Unicode. En adoptant ces pratiques, les développeurs peuvent écrire des applications basées sur des bases de données sécurisées et fiables.
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!