2 votes

codeigniter query builder et active record sql injection

Depuis ma dernière question dans SO, j'ai lu un peu sur la façon de prévenir l'injection sql et beaucoup de gens ont mentionné la classe active records. mais quand je la cherche sur Google, elle n'existe que dans codeigniter 2.

Mes questions sont donc les suivantes :

  1. La Query Builder Class dans Codeigniter 3 est-elle la version améliorée de l'Active Record Class ou ont-elles des objectifs différents ?

  2. est-il suffisant (en général) d'utiliser les méthodes de la classe Query Builder telles que $this->where('field', $foo); au lieu de $this->where("field = '$foo'"); pour éviter l'injection sql ?

P.S. J'utilise codeigniter 3 et mysql

1voto

Erfan Sahaf Points 497

1- ActiveRecord était dans Codeigniter 2, mais dans Codeigniter 3 vous avez QueryBuilder à la place. Les deux classes font le même travail pour vous, peut-être que QueryBuilder est une version améliorée d'ActiveRecord. Dans d'autres frameworks comme Yii2, ActiveRecord est un ORM et pas seulement un constructeur de chaînes de requêtes, mais dans CI, c'était un simple constructeur de requêtes.

2- Codeigniter échappe automatiquement tous les paramètres passés mais je vous suggère de valider vos entrées avant d'exécuter les requêtes. Par exemple, la valeur d'un champ numérique id doit être un nombre, pas une chaîne de caractères, donc la règle de l'entrée ID doit être INTEGER . Vous pouvez consulter la documentation officielle sur la validation dans Codeigniter 3 : https://www.codeigniter.com/userguide3/libraries/form_validation.html

Tout ce que vous devez faire, c'est passer la valeur de votre champ en tant que paramètre de fonction, et non en tant que chaîne de caractères (champ et valeur ensemble). Si vous voulez exécuter votre requête sans QueryBuilder, vous devez échapper vos paramètres manuellement. Vous pouvez obtenir plus d'informations à ce sujet dans la documentation de Codeigniter :

https://www.codeigniter.com/userguide3/database/queries.html#escaping-queries

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X