Je me demande s'il y a une inconvénient ou une mauvaise pratique dans la procédure suivante: p>
au lieu de faire ce qui suit: p>
Comme nous affichons le même $ user_input sur beaucoup d'endroits, il se sent plus efficace de le faire sur la saisie, y a-t-il des rétrécissements / mauvaises pratiques / exploitement-la capacité de le faire de cette façon? P>
acclamations! p>
@matt: En général, garder les choses lisibles et maintenues, essayez de le stocker aussi près que possible du contenu original et non filtré. Cela dépend de deux choses:
Est-ce qu'une autre personne / programme va faire référence à ces données?
Les données doivent-elles être facilement modifiables? P>
@sjoerd: Il y a un inconvénient si vous souhaitez afficher les données comme autre chose que HTML, par exemple. Un téléchargement de CSV, pdf, etc. p>
3 Réponses :
Il y a un inconvénient si vous souhaitez afficher les données comme autre chose que HTML, par exemple. Un téléchargement de CSV, pdf, etc. p>
Cela dépend de deux choses: p>
L'avantage de la méthode que l'on est que, dans le cas où les données sont utilisées dans un lieu em> et Cependant, cela ne laisserait pas une amélioration notable si les données HTML sont très grandes. En général, pour garder les choses lisibles et maintenues, essayez de le stocker aussi près que possible du contenu original et non filtré. P>
En fait, vous trouverez peut-être que HTML est la mauvaise chose à stocker de toute façon. Il serait peut-être préférable de stocker quelque chose comme Markdown et simplement le convertir en HTML lors de la visualisation. P > htmlentititions () code> serait appelée à chaque fois, vous seriez Saviller cette étape. P>
Merci, pour cette application spécifique, les données sont des commentaires sur les produits, à savoir les évaluations des utilisateurs dans un shoppart et je souhaite protéger contre les attaques XSS. Donc, l'évitement de l'attaque XSS est la mise au point ici ..
Est-ce qu'une autre personne / programme va faire référence à ces données? - Non pour le moment, cependant peut-être plus tard à travers les API. Les données doivent-elles être facilement modifiables? - Les utilisateurs devraient pouvoir modifier leurs commentaires
@samuelf - Je vous suggère de stocker le code HTML tel quel (bien que vous avez toujours besoin de mysql_escape code> pour éviter les injections SQL). Appeler htmlentities code> au moment de la demande ne devrait pas être un impact important.
Je conseillerais contre elle. Si vous avez déjà besoin de ces données pour autre chose que de l'afficher en tant que HTML (affichage dans la console, envoyez un courrier électronique texte, écrivez au journal, etc.), vous devrez le convertir. p>
Une bonne pratique consiste à appliquer de telles transformations uniquement au dernier moment. Utilisez MySQL_Escape avant d'insérer dans la base de données, utilisez HTMLENTity (ou HTMLSpecialchars) avant d'afficher en tant que HTML. De cette façon, vous savez toujours où vos fonctions d'évasion devraient être. S'ils ne sont pas là, vous pouvez facilement dire que vous faites quelque chose de mal. Vous savez également que les données de la base de données sont toujours propres et vous n'avez pas besoin de vous rappeler si vous l'avez codée, qu'avez et comment le retourner. P>