quand utiliser htmlspecialchars ()?

Salut Je me demandais quand était l'endroit approprié pour utiliser htmlspécialchars(). Est-ce avant d'insérer des données dans la base de données ou lors de leur extraction de la base de données?

25
demandé sur khr2003 2011-02-03 06:12:00
la source

4 ответов

vous ne devez appeler cette méthode que lorsque vous faites écho des données en HTML.

ne stockez pas le HTML échappé dans votre base de données; cela rendra les requêtes plus ennuyeuses.

La base de données devrait stocker vos données réelles, pas sa représentation HTML.

28
répondu SLaks 2011-02-03 06:14:31
la source

Vous utilisez htmlspecialcharsTOUS les heure de la sortie contenu dans le code HTML, il est interperted que le contenu et pas en HTML.

si vous permettez au contenu D'être traité comme HTML, vous venez d'ouvrir la porte aux bogues à tout le moins, et aux hacks XSS totaux au pire.

12
répondu gahooa 2011-02-03 06:15:31
la source

Enregistrer la chose exacte que l'utilisateur entre dans la base de données. puis, lorsque vous l'affichez au public, utilisez htmlspecialchars(), de sorte qu'il offre une certaine protection xss.

4
répondu Vamsi Krishna B 2011-02-03 06:20:34
la source

Guide-Comment utiliser la fonction htmlspecialchars () en PHP

Pour commencer, vous devez comprendre 1 concept simple: Rendre.

Qu'est-ce que Render? Render est quand le HTML transforme

<b>Hello</b>

pour mettre en gras comme ceci Bonjour. C'est rendu.

...Quand utiliser htmlspecialchars ()?

partout où vous voulez afficher du contenu HTML. Par exemple, si vous utilisez JQuery et vous faire ceci:

$("#YourDiv").html("<b>Hello</b>");

le contenu div sera Bonjour. Il a rendu le texte en HTML.

Si vous souhaitez afficher le message de cette façon (a été écrit par l'utilisateur):

<b>Hello</b>

vous devez mettre:

$("#YourDiv").text("<b>Hello</b>");

de cette façon le bonjour ne sera jamais rendu.

si vous voulez charger le message (tel qu'écrit par l'utilisateur) dans une zone de texte, textarea, etc... Vous devez mettre:

<input type="text" class="Texbox1" value="">

<script>
$(".Textbox1").val("<b>Hello</b>");
</script>

Qui affichage

 <b>Hello</b>

dans la zone de texte sans problème.

Conclusion:

quelles données l'utilisateur entre-t-il dans vos formulaires, etc...Enregistrez les données comme d'habitude. Ne pas utiliser n'importe quelle fonction. Si l'utilisateur a envoyé 12345 enregistrer comme il est. Ne filtre rien. Vous n'avez à filtrer que lorsque vous voulez afficher les données dans la page aux utilisateurs. Vous, seulement vous décidez si vous voulez rendre ou non ce que l'Utilisateur a écrit. *Rappeler que.

Cordialement!

1
répondu Manuel 2017-09-09 07:53:07
la source

Autres questions sur