Comment nettoyer le code HTML le code en Java pour empêcher les attaques XSS?
Je suis à la recherche pour la classe/util etc. pour nettoyer le code HTML le code c'est à dire supprimer dangereux des balises, des attributs et des valeurs d'éviter les attaques de type XSS et des attaques similaires.
- Je obtenir le code html à partir de l'éditeur de texte enrichi (par exemple TinyMCE), mais il peut être envoyer manière malveillante autour de, ommiting TinyMCE validation ("Données soumises par le formulaire off-site").
Est-il quelque chose aussi simple à utiliser que InputFilter en PHP? Solution parfaite, je peux imaginer fonctionne comme ça (à supposer désinfectant est encapsulé dans HtmlSanitizer classe):
String unsanitized = "...<...>..."; //some potentially
//dangerous html here on input
HtmlSanitizer sat = new HtmlSanitizer(); //sanitizer util class created
String sanitized = sat.sanitize(unsanitized); //voila - sanitized is safe...
Mise à jour - la solution la plus simple, le mieux! Petite util classe avec aussi peu de dépendances externes sur d'autres librairies/frameworks que possible - serait le mieux pour moi.
Comment à ce sujet?
- Donc, ce que vous voulez est pour les clients d'être en mesure de soumettre des formulaires qui sont ensuite affichées dans la forme de fx. un livre d'or? Et vous voulez qu'ils soient en mesure d'utiliser le langage html, mais vous voulez toujours être en mesure de bloquer des utilisateurs malveillants de piratage-tente? Ou ai-je tout faux ici...?
- Je veux que les clients (utilisateurs via leurs navigateurs) à soumettre texte enrichi de contenu (format html via l'éditeur de texte enrichi - TinyMCE), mais de vérifier et de supprimer tout élément potentiellement dangereux (dangereux) de contenu. Je ne sais pas qu'est-ce que fx et le livre d'or que vous mentionnez dans ce contexte.
- Ah! Je vais donner un coup de feu, donnez-moi quelques minutes
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer OWASP HTML Java Désinfectant. Il est très simple à utiliser.
Vous pouvez utiliser OWASP ESAPI pour Java, qui est une bibliothèque sur la sécurité qui est construite à faire de telles opérations.
Pas seulement pour les codeurs HTML, il a aussi des codeurs pour exécuter le JavaScript, le CSS et le codage d'URL. Exemples d'utilisation de ESAPI peut être trouvé dans le XSS prévention de la triche publié par l'OWASP.
Vous pouvez utiliser le OWASP AntiSamy projet pour définir une politique de site que les états de ce qui est autorisé dans le contenu soumis par l'utilisateur. La politique du site peuvent être utilisées par la suite pour obtenir des "nettoyer" le code HTML qui est affichée sur l'écran. Vous pouvez trouver un échantillon TinyMCE politique de fichier sur le AntiSamy page des téléchargements.
HTML échapper entrées fonctionne très bien. Mais dans certains cas, les règles d'affaires peut vous demander de ne PAS échapper à l'HTML. En utilisant les REGEX n'est pas adapté à la tâche et il est trop difficile de trouver une bonne solution à l'aide.
La meilleure solution que j'ai trouvé est d'utiliser: http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
Il construit une arborescence DOM avec la condition d'entrée et filtre tout élément non previosly autorisé par une liste Blanche. L'API a également d'autres fonctions pour le nettoyage du code html.
Et il peut également être utilisé avec javax.validation @SafeHtml(whitelistType=, additionalTags=)
Grâce à @Saljack de réponse. Juste pour donner plus de détails à OWASP HTML Java Désinfectant. Il a travaillé vraiment bien (rapide) pour moi. Je viens d'ajouter les éléments suivants à la pom.xml dans mon projet Maven:
Vérifier ici pour la dernière version.
Puis j'ai ajouté cette fonction pour la désinfection:
Plus de tags peuvent être ajoutés par l'extension de la délimité par des virgules paramètre dans allowElements méthode.
Ajoutez cette ligne juste avant le passage de la fève off pour enregistrer les données:
Que c'est!
Pour une logique plus complexe, cette bibliothèque est très flexible et il peut gérer plus sophistiqué de désinfection de mise en œuvre.
Concernant Antisamy, vous voudrez peut-être vérifier ce qui concerne les dépendances:
http://code.google.com/p/owaspantisamy/issues/detail?id=95&can=1&q=redyetidave