Maison > développement back-end > tutoriel php > Comment puis-je récupérer en toute sécurité des données de MySQL à l'aide d'instructions préparées par PHP ?

Comment puis-je récupérer en toute sécurité des données de MySQL à l'aide d'instructions préparées par PHP ?

Mary-Kate Olsen
Libérer: 2024-12-15 09:10:13
original
109 Les gens l'ont consulté

How Can I Securely Retrieve Data from MySQL Using PHP Prepared Statements?

Création d'instructions préparées MySQL sécurisées en PHP

Si vous êtes débutant en PHP avec des instructions préparées MySQL, vous êtes tombé sur le besoin de récupérer en toute sécurité les données des colonnes. Pour y parvenir, plongeons dans le monde des instructions préparées, garantissant la sécurité de vos requêtes.

Dévoilement de la requête vulnérable

Votre instruction SQL actuelle, bien que simple, échoue en termes de sécurité :

$qry = "SELECT * FROM mytable where userid='{$_GET['userid']}' AND category='{$_GET['category']}'ORDER BY id DESC";
Copier après la connexion

Cette approche laisse votre application vulnérable aux attaques par injection SQL, où des utilisateurs malveillants peuvent manipuler votre requête en utilisant des caractères spéciaux.

Création d'une déclaration préparée sécurisée

Pour immuniser votre requête, utilisons une déclaration préparée :

$stmt = $db->prepare("SELECT * FROM mytable WHERE userid=? AND category=? ORDER BY id DESC");
Copier après la connexion

Cette déclaration utilise des espaces réservés ("?") pour représenter les paramètres d'entrée. Nous lions ensuite ces paramètres aux valeurs réelles en toute sécurité :

$stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
Copier après la connexion

En liant les données séparément, nous empêchons les caractères malveillants de modifier notre requête.

Optimisation des performances

Vous êtes curieux de connaître les implications en termes de performances des instructions préparées. Bien qu'elles puissent offrir des avantages marginaux pour une seule exécution, elles brillent vraiment lorsqu'elles sont exécutées plusieurs fois au sein d'une page ou d'une boucle.

L'instruction préparée met en cache le plan de requête, éliminant ainsi le besoin de l'analyser et de le compiler à chaque exécution. . Cette optimisation peut conduire à des améliorations significatives de la vitesse, en particulier pour les requêtes complexes.

Extraction de tableaux associatifs

Pour les requêtes qui renvoient plusieurs colonnes, vous pouvez utiliser la fonction suivante pour automatiquement se lier à un tableau associatif :

function stmt_bind_assoc (&$stmt, &$out) { ... }
Copier après la connexion

Cet utilitaire rationalise le processus de travail avec les tableaux renvoyés par SELECT * requêtes.

Conclusion

Les instructions préparées sont essentielles pour sécuriser vos requêtes MySQL et prévenir les attaques par injection SQL. En les implémentant, vous pouvez protéger votre application et bénéficier d'optimisations de performances lors de l'exécution multiple de la même requête. Profitez de la puissance des instructions préparées pour un accès sécurisé et efficace aux 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal