PDO MySQL : devriez-vous utiliser PDO::ATTR_EMULATE_PREPARES ?
Vous envisagez d'utiliser PDO pour ses instructions préparées sécurisées et ses paramètres nommés. Cependant, vous souhaitez trouver un équilibre entre performances et sécurité. Examinons les avantages et les inconvénients du mode d'émulation de PDO.
Performances par rapport à la sécurité
PDO::ATTR_EMULATE_PREPARES peut améliorer les performances mais peut compromettre la sécurité. Les instructions préparées émulées utilisent la concaténation de chaînes au lieu du protocole binaire natif de MySQL pour la substitution de paramètres. Bien que cela puisse être plus rapide, cela n'offre pas la même protection contre l'injection SQL que les instructions préparées natives.
Gestion des erreurs
Avec les instructions préparées natives, les erreurs de syntaxe sont détecté lors de la préparation. Cependant, avec l’émulation, ils ne sont détectés qu’au moment de l’exécution. Cela peut avoir un impact sur la gestion des erreurs et le débogage.
Mise en cache des requêtes
Les anciennes versions de MySQL (antérieures à 5.1.17) ne peuvent pas utiliser d'instructions préparées avec le cache de requêtes. Cependant, les versions 5.1.17 et ultérieures peuvent même mettre en cache les requêtes préparées.
MySQL version 5.1.61 et PHP version 5.3.2
Pour vos versions spécifiques de MySQL et PHP, vous disposez des options suivantes :
Recommandation
Si vous réutilisez rarement les instructions préparées dans une seule requête et que les performances sont une priorité, permettre l’émulation peut être une option viable. Toutefois, si la sécurité est d'une importance primordiale, il est fortement recommandé de désactiver l'émulation.
Considérations supplémentaires :
En examinant attentivement les avantages et les inconvénients évoqués ci-dessus, vous pouvez prendre une décision éclairée qui équilibre performances et sécurité.
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!