PHP - HTML Purificateur d' - bonjour w<o>rld/monde tutoriel striptags
Je suis juste à la recherche à l'aide de HTML Purificateur pour s'assurer qu'un utilisateur d'inscription de la chaîne (qui représente le nom d'une personne) est aseptisé.
Je ne veux pas permettre à toutes les balises html, script, balisage, etc - je veux juste l'alpha, numérique et normal caractères de ponctuation.
Le nombre d'options disponibles pour HTML Purificateur est gigantesque, et, aussi loin que je peux voir, les docs ne semblent pas avoir un debut/milieu ou à la fin
voir: http://htmlpurifier.org/docs
Est-il un simple hello world tutoriel en ligne pour HTML Purificateur qui montre comment désinfecter une chaîne d'enlever toutes les mauvaises choses.
Je suis aussi en considérant simplement à l'aide de bande tags:
ou de PHP dans la construction de données de désinfection
strip_tags()
pour une tâche triviale de ce genre 🙂 Avantages: Facile à mettre en œuvre, facile à comprendre, facile à remplacer (à chaque fois que les exigences de changement). Inconvénients: ?Je seconde ce que jensgram dit. C'est une tâche pour
strip_tags()
et htmlentities()
- devrait suffire à déjouer toute tentative d'attaque.oui - j'aimerais utiliser la bande de balises, mais j'ai lu que "striptags() est fondamentalement vicié et ne doit pas être utilisé." - htmlpurifier.org/comparison#striptags - mais je ne suis pas sûr de la façon up-to-date qui est ou comment il est pertinent de sa " couverture à l'utilisation de la suppression de tous les tags
étrangères tags: Buggy" m'inquiète un peu. Mais "bien formé", "imbrication", et "attributs" sont sans ignorer dans votre cas.
HTML Épurateur d'eco est un merveilleux outil de HTML. En l'utilisant sur un non-texte HTML-chaîne n'est pas grande. Ça va faire quelques choses pour vous, mais ce n'est pas vraiment ce que vous voulez.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
J'ai été en utilisant HTMLPurifier pour l'assainissement de la sortie d'un éditeur de texte riche, et terminé avec:
Les principaux points d'intérêt:
HTMLPurifier_Config
comme$config
.$config->set()
.HTMLPurifier
, en passant$config
.$filter->purify()
sur votre entrée.Cependant, il est tout à fait excessif pour quelque chose qui n'a pas besoin de permettre à tout le HTML dans la sortie.
OriginalL'auteur
Vous devriez faire de l'entrée de validation basée sur le contenu - par exemple, plutôt d'utiliser des expressions régulières pour le nom
cette validation doit bien faire le travail. Et puis échapper à la sortie lors de l'impression sur une page, avec des préféré htmlspecialchars.
OriginalL'auteur
Vous pouvez utiliser quelque chose comme htmlspecialchars (), afin de préserver les caractères que l'utilisateur a tapé dans sans le navigateur de l'interprétation.
OriginalL'auteur
J'ai toujours pensé que Codeigniter est xss nettoyage de la classe était très bonne, mais plus récemment, j'ai tourné à Kohana.
Jeter un oeil à leurs xss_clean méthode
http://github.com/kohana/core/blob/c443c44922ef13421f4a3af5b414e19091bbdce9/classes/kohana/security.php
OriginalL'auteur
La façon la plus simple pour supprimer tous les caractères non-alphanumériques à partir d'une chaîne, je pense, est d'utiliser les RegEx.Replace() comme suit:
Regex.Remplacer(stringToCleanUp, "[\W]", "");
Tandis que \w (en minuscules) correspond à n'importe quel " mot " de caractère, équivalent à [a-zA-Z0-9_]
\W correspond à une "non-mot", c'est à dire. ce qui n'est PAS compensée par \w.
Le code ci-dessus va utiliser \W (en majuscules) et de remplacer les résultats avec rien.
Comme une alternative si vous ne souhaitez pas autoriser le trait de soulignement vous pouvez utiliser [^a-zA-Z0-9], comme ceci:
Regex.Remplacer(stringToCleanUp, "[^a-zA-Z0-9]", "");
OriginalL'auteur
Si vous essayez d'échapper à l'injection de code attaques, juste scape les données et de les stocker et de les imprimer comme l'utilisateur a entré.
Par exemple: Si vous voulez éviter les Injection SQL dans MySQL, utilisez la
mysql_real_escape_string()
fonction ou similaire pour désinfecter la phrase SQL. *Un autre exemple: ecriture de données dans un document HTML, analyser les données avec
html_entities()
, de sorte que les données s'affiche comme entrée par l'utilisateur.OriginalL'auteur
Pour des raisons de simplicité, vous pouvez utiliser
strip_tags()
, ou de remplacer les occurrences de <, > et & avec<
,>
, et&
, respectivement. Ce n'est certainement pas la meilleure solution, mais le moyen le plus rapide.OriginalL'auteur
j'ai l'habitude de nettoyer toutes les entrées utilisateur avant de l'envoyer à ma base de données avec le suivant
mysql_real_escape_string()
a un sens, et si vous avez des magic quotes GPC est activé, vous pouvez avoir besoin de fairestriptags()
, mais pourquoi lehtmlentities()
?de sorte que lorsque vous affichez la valeur de la db dans un navigateur son code html valide
Je ferais ça quand je suis sortie, et non pas lors de l'enregistrement. De cette façon, la base de données stocke les données réelles. Fait sens pour moi, de toute façon. haussement d'épaules
de préférence personnelle, pas vraiment la peine de -1 OMI
Je n'ai pas le droit de voter sur cette réponse, d'une manière ou d't l'autre.
OriginalL'auteur
Trouvé ce il y a une semaine... l'AMOUR.
"Un PHP simple HTML DOM parser écrit en PHP5+, prend en charge HTML non valide, et fournit un moyen très facile de manipuler des éléments HTML."
http://simplehtmldom.sourceforge.net/
Vous pouvez également parcourir et supprimer des tags, etc. La documentation et les exemples sont très bien fait... je l'ai trouvé facile à utiliser dans pas mal d'endroits. 🙂
Pédant Remarque: cela n'a rien à voir avec la sécurité ou la désinfection. SimpleHTMLDom est juste pour travailler les éléments dans une manière orientée objet. -1
OriginalL'auteur