J'ai un site Web ASP.NET MVC2 qui utilise fortement Ajax et JSON pour charger des données à partir d'une base de données et remplir du code HTML. J'aimerais pouvoir encoder l'objet JSON afin qu'il rende tout HTML en texte plutôt qu'en HTML. J'ai été surpris de ne pas trouver beaucoup de discussions/solutions évidentes pour cela, car cela semble être un gros problème XSS potentiel. Suis-je en train de négliger quelque chose, et il existe un moyen simple de le faire? Ou dois-je trouver une solution interne pour cela? Si je le fais moi-même, devrais-je le faire sur le modèle, sur le contrôleur, ou dans la jquery?Comment encoder la réponse JSON/Ajax pour XSS?
2
A
Répondre
4
Pour protéger contre XSS, codez le code HTML lors de sa sortie dans la vue. Les données doivent rester crues (sauf pour le codage JSON, ce qui devrait être fait automatiquement par votre bibliothèque JSON) dans le JSON.
Si vous demandez le JSON avec JavaScript, puis en insérant une partie dans le document. Utilisez document.createTextNode(String)
pour créer un textNode à partir des données (qui prend soin des caractères avec une signification spéciale en HTML), puis insérez ce textNode dans le document.
1
Un collègue m'a fait remarquer que j'utilisais .html() pour rendre les données JSON, alors que j'aurais dû utiliser .text(), ce qui est une manière implicite d'utiliser .createTextNode().
Questions connexes
- 1. Comment encoder l'objet PHP en réponse nuSOAP?
- 2. "Protection anti-XSS" en ajoutant)]} 'avant la réponse ajax
- 3. Vulnérabilité XSS
- 4. Comment fixer XSS Vulnérabilités
- 5. comment encoder la sortie json.stringified
- 6. Comment encoder la latitude/longitude pour la recherche de boîte?
- 7. Alternatives pour encoder l'URL
- 8. auto-évasion pour empêcher XSS
- 9. Comment encoder correctement un lien mailto?
- 10. Comment réparer les vulnérabilités XSS sur javascript?
- 11. Comment encoder une URL?
- 12. Comment utiliser la bibliothèque de fermeture pour encoder avec AES?
- 13. HTML Encoder pour @ Html.TextAreaFor (model => model.Product.LongDesc, 10,100, null)
- 14. Comment utiliser JSONP pour résoudre le problème XSS?
- 15. Comment protéger XSS en CSS?
- 16. PHP json_encode et XSS
- 17. Comment gérer XSS sur NVelocity
- 18. Comment encoder le caractère "'"
- 19. XSS: REQUEST_URI exécute htmlspecialchars() - puis remplace & par & - assez pour empêcher l'injection XSS?
- 20. Comment encoder une image?
- 21. Comment encoder l'URL?
- 22. Comment encoder ce script?
- 23. Comment encoder un NSDecimal?
- 24. Spring/Java - Encoder les entités HTML + XHR
- 25. VULNÉRABILITÉ XSS POUR XML - response.getWriter(). Write (xml.toString());
- 26. $ this-> escape() dans la vue Zend assez pour xss
- 27. La liste complète des triggers XSS pour ValidateRequest dans ASP.NET
- 28. Comment gérer la réponse de l'encodage urllib.request.urlopen()
- 29. XSS pour modifier l'état de la session ASP.NET
- 30. Cette fonction est-elle suffisante pour la détection xss?