htmlspecialchars vs htmlentities quand concernés par XSS
J'ai vu beaucoup de réponses contradictoires à ce sujet. Beaucoup de gens aiment à citer que des fonctions php ne suffiront pas à vous protéger contre les attaques de type xss.
Ce XSS exactement peut le faire à travers htmlspecialchars et ce qui peut le faire à travers htmlentities?
Je comprends la différence entre les fonctions, mais pas les différents niveaux de protection xss vous êtes de gauche avec. Quelqu'un pourrait-il m'expliquer?
- Voir stackoverflow.com/questions/1891392/... concernant htmlentities voir aussi: stackoverflow.com/questions/71328/... pour plus d'informations sur le sujet. Vous pouvez aussi regarder du côté droit de cette page, sous "Liées" pour plus pertinents et des sujets similaires.
Vous devez vous connecter pour publier un commentaire.
htmlspecialchars() ne sera PAS vous protéger contre UTF-7 XSS exploits, qui sévissent encore Internet Explorer, même dans IE 9: http://securethoughts.com/2009/05/exploiting-ie8-utf-7-xss-vulnerability-using-local-redirection/
Par exemple:
Vous devriez toujours utiliser htmlentities et très rarement utiliser htmlspecialchars lors de la désinfection de la saisie de l'utilisateur. Aussi, vous devriez toujours bande de balises avant. Et pour vraiment important et des sites sécurisés, vous devriez JAMAIS confiance strip_tags(). Utilisation HTMLPurifier pour PHP.
strip_tags
. Il malforms légitimes d'entrée (2 < 4
,<g>
), mais n'améliore pas la sécurité dehtmlspecialchars
échappé de données.htmlentities
ne va pas vous aider plus quehtmlspecialchars
volonté. Deux d'entre eux interpet l'UTF-7 codages de<
et>
simplement comme "sûr" ASCII caractères et de les passer. Même problème avecstrip_tags
.htmlspecialchars
, et de définir le bon jeu de caractères de la page. Si le navigateur ignore le bon jeu de caractères, il n'y a pas beaucoup que vous pouvez faire...htmlspecialchars
ethtmlentities
devrait obtenir le même résultat. Mais si certains caractères Chinois, à l'aide dehtmlentities
serait un cauchemar。Si PHP est
header
de commande est utilisé pour définir le jeu de caractèrespuis
htmlspecialchars
ethtmlentities
devrait à la fois être sans danger pour la sortie de HTML car XSS ne peut pas être réalisé en utilisant UTF-7 encodages.Veuillez noter que ces fonctions ne doivent pas être utilisés pour la production de valeurs en JavaScript ou CSS, car il serait possible de saisir des caractères qui permettent d'activer le JavaScript ou CSS être échappés et de mettre votre site à risque. Veuillez voir le XSS Prévention de la Feuille de Triche sur la façon de bien gérer ces situations.
Je ne sais pas si vous avez trouvé la réponse que vous cherchiez, mais, je suis également à la recherche d'un code HTML plus propre. J'ai une application que je suis bâtiment et que vous voulez être en mesure de prendre le code HTML, peut-être même de Javascript ou d'autres langues et de les mettre dans une base MySQL sans causer de problèmes ou permettant XSS questions. J'ai trouvé HTML Purificateur d' et il semble être le plus développé et toujours maintenu l'outil de nettoyage des renseignements soumis par les utilisateurs sur un système PHP. La page liée est leur compairison page qui peut rapporter de raisonnement pour expliquer pourquoi leur ou d'un autre outil pourrait être utile. Espérons que cette aide!