Comment échapper à la chaîne en Ruby pour protéger contre les injections SQL? (Pas De Rails)
Je voulais juste savoir comment pouvons-nous échapper d'une requête SQL (string) en Ruby pour empêcher l'Injection SQL. veuillez noter que je ne suis pas à l'aide de Rails de cadre.
Grâce.
OriginalL'auteur | 2009-02-08
Vous devez vous connecter pour publier un commentaire.
Si possible, utilisez le Ruby DBI module, et au lieu d'essayer de citer vos chaînes, utilisez paramétrées, les requêtes préparées, comme ceci:
Citant seront traitées correctement pour vous, et les injections seront une chose du passé.
Edit: Notez que cet exemple montre néant d'être passée comme premier paramètre de execute(). Il correspond à la première ? dans la requête, et est traduit en "NULL" par le module DBI. Les autres paramètres sont également correctement cité et inséré dans la requête.
C'est seulement un exemple. Mais notez que le premier paramètre à execute() est tout simplement nul, et le paramètre correspondant dans la requête (le premier point d'interrogation) est une pièce d'identité. "id" est inséré comme NULLE dans cet exemple.
Je voulais savoir la même chose, comme l'OP, mais je voulais juste écrire des instructions SQL dans un fichier, donc je suppose que les requêtes préparées sont sur la table? Pourrais-je (ab).inspecter pour échapper à cordes?
OriginalL'auteur greyfade
Vous n'avez pas à utiliser des rails, vous pouvez simplement
require 'activerecord'
et l'utiliser comme vous le feriez dans les rails (définir des modèles et l'utilisation de ceux-ci). Ce que vous faites là est tout simplement ré-inventer la roue.OriginalL'auteur Ryan Bigg
Écrire une petite fonction pour citer les chaînes. Je pense que les Rails utilise juste quelque chose comme ceci:
Parfois, vous avez à travailler sur un script de migration et n'ont pas les pierres précieuses supplémentaires installé (pas de rails ou dbi) et quand cela arrive, c'est une solution efficace. Dans presque tous les autres cas vous devez utiliser des requêtes préparées, bien sûr.
OriginalL'auteur ice cream
N'essayez pas de désinfecter vos données. Utiliser les requêtes préparées. Voir aussi http://bobby-tables.com/ruby.html
OriginalL'auteur Andy Lester