Comment l'injection SQL est généralement arrêtée dans une configuration Spring / Hibernate
Je déteste le langage Ruby, car il n'est pas typé statiquement, mais plus je passe de temps avec Spring/Hibernate j'apprécie de plus de Ruby on Rails. En particulier le fait que leur Enregistrement Actif modèle empêche l'injection SQL pour vous. Comment cette question est-elle généralement traités avec un Spring/Hibernate pile? Ne soit arrivé avec un scrubbing toolkit, de la sorte, assurez-vous que votre saisie de l'utilisateur est sûr?
Ce n'est pas vraiment un problème sur la notice si vous êtes juste de l'insertion de DAO, mais c'est un problème majeur lors de l'utilisation d'instructions Select.
source d'informationauteur John Baker | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
Injection SQL ne doit pas être un risque lorsque vous êtes en utilisant Hibernate - aussi longtemps que vous l'utilisez correctement.
Hibernate requêtes sont écrits dans les requêtes HQL (Hibernate, SQL comme langage de requête) ou mis en œuvre à l'aide de l'orienté objet Critères d'API.
HQL est le plus commun et le plus recommandé. En général, vous écrivez une requête HQL comme ceci:
Dans ce formulaire, vous êtes protégé contre l'injection SQL, parce que Hibernate passe dans la chaîne de caractères comme paramètre; il ne peut pas être interprétée comme faisant partie de la SQL.
Toutefois, si vous vous comportez mal un écrire une requête comme ceci...
...alors vous n'êtes pas protégé contre l'injection SQL. Cependant, vous ne devriez jamais être de l'écriture de requêtes de ce genre! Je ne pense pas que n'importe quel cadre vous protège si vous ajouter des cordes à vos requêtes.
Enfin, si vous utilisez la veille prolongée Critères d'API, vous êtes automatiquement protégé contre l'injection SQL; parce que Hibernate génère la requête sous-jacente lorsque vous utilisez l'API criteria il le fasse d'une manière qui empêche l'injection SQL.
Je pense que vous avez répondu à votre propre question - si vous êtes seulement en utilisant les requêtes HQL comme un dernier recours, alors que, probablement, élimine 95% du potentiel de points d'attaque. Et, parce que vous êtes seulement en utilisant cette délicate bord des cas, vous êtes probablement payer plus attention à ce que vous êtes en train de faire.