Nous utilisons jsp, servlets, beans avec la base de données mysql. Nous ne souhaitons pas limiter les caractères saisis par les utilisateurs sur les champs de formulaire. Comment puis-je assainir l'entrée et comment m'assurer que la sortie n'est pas modifiée pour les activités malveillantes. Est-il possible lors de l'envoi de la sortie, je pourrais vérifier si un code supplémentaire a été envoyé. Comme supposons qu'il y ait un champ d'entrée de recherche - l'utilisateur donne quelque chose comme <script>alert("I am here")</script>
. Est-ce que je pourrais savoir qu'il s'agit d'une balise html? Si l'utilisateur ajoute un paramètre supplémentaire à un champ de lien, est-ce qu'il y a un contrôle avant et après que je pourrais faire pour que le document réalise qu'il y a eu un champ de lien supplémentaire.Comment mieux désinfecter l'entrée dans la webapp
Répondre
Vous devriez toujours faire un échappement HTML de base des données provenant de sources telles que l'entrée utilisateur ou la base de données qui pourrait contenir des caractères non valides. La balise JSP <c:out>
le fait, par exemple. De cette façon, si l'utilisateur entre "<script> ..."
dans un champ et que vous l'imprimez à nouveau, il sera imprimé au format HTML sous la forme "<script> ..."
.
Vous devriez vraiment permettre aux utilisateurs de saisir aussi peu de HTML et/ou de javascript que possible. Une bonne solution pour valider et assainir ce genre de choses est d'utiliser une bibliothèque prête à l'emploi comme OWASP AntiSamy.
En outre, jetez un oeil à OWASP Enterprise Security API pour une collection de méthodes de sécurité dont un développeur a besoin pour construire une application web sécurisée.
Donner jsoup
un coup d'oeil pour vous aider. Quoi que vous fassiez, n'essayez pas de le pirater en utilisant regex ou quelque chose, car alors vous aurez 2 problèmes. :-)
Avec jsoup
, tout ce que vous avez besoin est un court extrait de code:
String safe = Jsoup.clean(unsafe, Whitelist.basic());
Vous pouvez ajouter des balises et des attributs Whitelist
assez facilement, mais je l'ai trouvé ne supporte pas les balises d'espace de noms.
- 1. Comment déployer la webapp externe dans tomcat?
- 2. Comment désinfecter l'entrée Erlang?
- 3. LogParser échouant dans WebApp
- 4. Comment tester HttpSessionListener.sessionDestroyed dans Java webapp?
- 5. Oracle Text: Comment désinfecter l'entrée utilisateur
- 6. Comment désinfecter l'entrée de la base de données en Java?
- 7. Comment/où déployer ma webapp
- 8. Comment mieux implémenter la fonctionnalité 'site fermé'?
- 9. Librairies .NET pour désinfecter l'entrée?
- 10. Comment mieux déboguer un crash dans objc_msgSend?
- 11. Traitement des courriels non livrés dans la webapp
- 12. Comment désinfecter les URI de titre avec PHP?
- 13. EntiryFramework dans WebApp: HowTo Store DSN
- 14. Caractères japonais dans java webapp et oracle
- 15. DesktopApp communique avec WebApp
- 16. iPhone WebApp cache
- 17. Désinfecter l'entrée Entrée XSS et HTML dans les rails
- 18. Une ou plusieurs servlets par webapp?
- 19. code Ruby Désinfecter ... pourquoi est et désinfecté
- 20. Caching mieux pratiqué dans Merb
- 21. Manipuler mieux 404 dans .NET
- 22. Comment mieux modéliser et rechercher la disponibilité saisonnière avec Rails
- 23. Lettre étrangère "t" dans la sortie de mon application Zend Framework - comment la trouver au mieux?
- 24. Comment mieux emballer un site Web
- 25. Comment mieux mettre à jour un nœud XML dans MSBuild
- 26. Comment partager au mieux un formulaire intégrable dans VB6?
- 27. Comment organiser au mieux les fichiers
- 28. Comment utiliser au mieux l'en-tête Expires dans ASP.NET MVC?
- 29. Comment intégrer au mieux plusieurs systèmes?
- 30. Comment sécuriser au mieux les enregistrements dans Rails?
S'il vous plaît pensez à renommer vos questions à quelque chose comme "Comment mieux nettoyer l'entrée en Java" - le titre de votre question n'aidera pas ceux qui cherchent des réponses similaires à l'avenir ... – razlebe
Whoa, quand vous allez retag la question, il exécute le javascript dans la question! Mauvais stackoverflow, mauvais! –
@robhruska: Belle trouvaille! – Adnan