Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il bon d'utiliser htmlspecialchars() avant d'insérer dans MySQL ?

Comme d'autres l'ont souligné, # 2 est la bonne réponse. Laissez-le "brut" jusqu'à ce que vous en ayez besoin, puis échappez-vous de manière appropriée.

Pour expliquer pourquoi (et je vais répéter/résumer les autres messages), prenons le scénario 1 à son extrême logique.

Que se passe-t-il lorsque quelqu'un entre " ' OR 1=1 <other SQL injection> -- ". Maintenant, peut-être que vous décidez que parce que vous utilisez SQL, vous devez coder pour SQL (peut-être parce que vous n'avez pas utilisé d'instructions paramétrées). Alors maintenant, vous devez mélanger (ou choisir) le codage SQL et HTML.

Soudain, votre patron décide qu'il veut aussi une sortie XML. Maintenant, pour garder votre modèle cohérent, vous devez également encoder pour cela.

CSV suivant - oh non ! Que faire s'il y a des guillemets et des virgules dans le texte ? Plus d'évasion !

Hé - que diriez-vous d'une belle interface AJAX interactive ? Maintenant, vous voulez probablement commencer à renvoyer JSON au navigateur, alors maintenant {, [ etc. doivent tous être pris en considération. AIDE!!

Donc, clairement, stockez les données telles qu'elles sont données (sous réserve des contraintes de domaine bien sûr) et codez de manière appropriée pour votre sortie au moment où vous en avez besoin . Votre sortie n'est pas la même que vos données.

J'espère que cette réponse n'est pas trop condescendante. Merci aux autres répondants.