2009-04-17 8 views
20

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

+0

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

+10

Whoa, quand vous allez retag la question, il exécute le javascript dans la question! Mauvais stackoverflow, mauvais! –

+0

@robhruska: Belle trouvaille! – Adnan

Répondre

5

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 "&lt;script&gt; ...".

10

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.

5

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.

Questions connexes