2008-12-08 2 views
2

Quelqu'un sait-il une bonne lib où je peux exécuter les chaînes avant qu'elles ne soient insérées, qui peuvent enlever le code sql/javascript? Pour être exécuté dans les pages JSP.Lib pour protéger l'injection SQL/javascript pour java/jsp

Idealy la lib serait:

  • Gratuit
  • légère
  • Facile à utiliser

Merci à l'avance pour la communauté SO qui répondra avec plaisir :)

Répondre

4

Vous devez vous appuyer sur le mécanisme de l'api de votre base de données pour utiliser les requêtes paramétrées. Si vous êtes premier construire dynamiquement une chaîne sql et puis voulez désinfecter la chaîne de requête terminée, vous le faites mal. C'est juste demander des ennuis. Edit: après avoir relu votre question, il semble que j'ai mal compris ce que vous demandiez. Je maintiens mes commentaires initiaux comme étant précis pour la partie injection de sql de votre question. Pour cela, vous voulez certainement de vrais paramètres de requête. En ce qui concerne le filtrage de javascript, je ne pense pas qu'il existe un véritable standard pour le faire. Je sais que Jeff a posté le code qu'ils utilisent ici à SO, mais je n'ai pas le lien à portée de main. Si je peux le trouver, je le posterai.

0

Ce que vous dites est que pour chaque entrée possible ajoutée à la chaîne, je dois d'abord retirer les données "malveillantes". Oui, c'est logique car je ne serais pas en mesure de dire qui a été ajouté comme une entrée et ce qui ferait partie de la requête elle-même.

ty Ok je suppose que je redémarrer un code :) changer encore la question de l'api est toujours debout :)

2

Jetez un oeil à AntiSamy sur OWASP. Je pense que cela pourrait être ce que vous cherchez. Je ne travaille pas actuellement en Java, donc je ne peux pas vous dire comment il fonctionne.

0

La balise c: out par défaut échappe XML. Cela peut être pratique pour stocker l'entrée de l'utilisateur, car la valeur liée sera toujours l'entrée de l'utilisateur, mais la source générée par le navigateur utilisera des entrées échappées.

0

Pour empêcher l'injection SQL, utilisez les objets PreparedStatement. Si vous utilisez une couche de persistance, assurez-vous qu'elle utilise des objets PreparedStatement. En ce qui concerne HTML et JavaScript malveillants, utilisez. Cela permet d'échapper les caractères XML par défaut. Vous pouvez également utiliser la fonction JSTL escapeXml trouvée dans le fn tld.

0

Juste reformulant les suggestions faites par d'autres ici:

L'OP veut prévenir les attaques par injection SQL et JavaScript.

Les attaques par injection SQL peuvent être évitées en veillant à ce que les requêtes/variables de liaison paramétrées soient utilisées pour fournir une entrée utilisateur à la base de données. Dans le monde Java, l'utilisation de PMD (et PMD rule) et Findbugs (les règles sont intégrées dans Findbugs par défaut) vous aidera à déterminer les emplacements dans votre base de code qui sont sensibles aux attaques par injection SQL. OWASP a un bon article sur preventing SQL injection in Java. En ce qui concerne l'injection de script, le moyen le plus sûr d'empêcher l'exécution de scripts par l'attaquant consiste à s'assurer que l'entrée de l'utilisateur, lorsqu'elle est utilisée comme sortie, doit être affichée au format codé - pour les applications Web , ce serait le codage HTML. This OWASP page vous montre comment effectuer un encodage HTML en Java.

Questions connexes