Je me demande s'il n'y a aucun inconvénient ou une mauvaise pratique en faisant la procédure suivante:htmlentities PHP() sur l'entrée avant insertion de DB, au lieu de la sortie
- user_input $ -> htmlentities (de user_input de $) -> mysql_escape (user_input de $) -> insérer user_input $ dans DB
- Sélectionnez user_input $ de DB -> echo $ user_input
au lieu de faire ce qui suit:
- user_input $ -> mysql_escape (de user_input de $) -> insérer user_input $ dans DB
- Sélectionnez user_input $ de DB -> echo htmlentities (user_input de $)
Comme nous affichons le même user_input de $ sur un terrain des endroits où il se sent plus efficace faire sur l'entrée à la place, y a-t-il des inconvénients/mauvaises pratiques/exploitabilité de le faire de cette façon?
À la votre!
bonnes réponses à la question de:
: En général @ Matt, pour garder les choses lisible et maintenable, essayez de le stocker au plus près du contenu original, non filtrée que possible. Cela dépend de deux choses: Est-ce que d'autres personnes/programmes vont référencer ces données? Les données doivent-elles être facilement modifiables?
@Sjoerd: Il existe un inconvénient si vous souhaitez afficher les données sous un autre format que HTML, par ex. un téléchargement CSV, PDF, etc.
Merci, pour cette application spécifique les données sont des commentaires sur les produits, à savoir les évaluations des utilisateurs dans une boutique et je veux protéger contre les attaques XSS. Donc l'évitement des attaques XSS est l'objet ici. – grandnasty
Est-ce que d'autres personnes/programmes vont référencer ces données? - Non pour le moment, mais peut-être plus tard via les API. Les données doivent-elles être facilement modifiables? - Les utilisateurs devraient être en mesure d'éditer leurs commentaires – grandnasty
@samuelf - Je vous suggère de stocker le HTML tel quel (même si vous avez encore besoin de 'mysql_escape' pour éviter les injections SQL). L'appel de 'htmlentities' à la demande ne devrait pas avoir un impact important. – Matt