comment éviter les injection sql dans codeigniter
Dans CodeIgniter, comment puis-je éviter l'injection sql? Existe t'il une méthode pour définir dans le fichier de configuration pour éviter les injection sql? Je suis l'aide de ce code pour la sélection de valeurs:
$this->db->query("SELECT * FROM tablename WHERE var='$val1'");
et ce pour l'insertion de valeurs:
$this->db->query("INSERT INTO tablename (`var1`,`var2`) VALUES ('$val1','$val2')");
Une autre méthode utilisée pour insérer et sélectionnez des valeurs dans la base de données est CodeIgniter est insert()
et get()
méthodes. Risque d'injection sql lors de l'utilisation de CodeIgniter est bulit-dans les fonctions
- page roytuts.com/prevent-sql-injection-in-codeigniter/
- Il est également bon d'utiliser xss_clean méthode à partir d'aide pour la sécurité.
Vous devez vous connecter pour publier un commentaire.
CodeIgniter est Active Record méthodes échapper automatiquement les requêtes pour vous, afin de prévenir l'injection sql.
ou
Si vous ne souhaitez pas utiliser les Enregistrements Actifs, vous pouvez utiliser liaisons de requête pour prévenir contre les injections.
Ou pour l'insertion, vous pouvez utiliser le
insert_string()
méthode.Il y a aussi le
escape()
méthode si vous préférez exécuter vos propres requêtes.vous pouvez utiliser
méthode..
d'autres méthodes sont répertoriées ici.
http://codeigniter.com/user_guide/database/queries.html
Vous devriez essayer d'éviter l'écriture de vos requêtes directement dans une chaîne, puis les passer à la fonction de requête. Une meilleure option serait d'utiliser l'Enregistrement Actif de la classe qui va construire vos requêtes pour vous et échapper au les valeurs. http://codeigniter.com/user_guide/database/active_record.html
Si vous souhaitez éviter d'utiliser l'Enregistrement Actif de la classe pour quelque raison que ce soit, vous pouvez afficher le Codeigniter documentation de la base de données de la classe qui a une méthode d'échappement pour échapper à vos valeurs avant de les transmettre à la méthode de requête. http://www.codeignitor.com/user_guide/database/queries.html
Ben
Dans CodeIgniter:
Il y a 2 mesures pour prévenir l'Injection SQL.
Pour ceux qui sont de la nouveauté dans la programmation web, un autre type de trou de sécurité dans la programmation web, qui peut être fatale, car il peut exposer votre côté interne de l'application de base de données, SQL Injection.
Et, heureusement, encore une fois, Codeigniter a la capacité de traiter avec elle. Mais malheureusement, beaucoup de CI programmeur, j'ai collaboré (et vous-même) n'est (ou pourrait) oublier ces deux mesures pour prévenir toute situation d'injection SQL.
Bâton avec ActiveRecord capacité
La première chose est de ne pas en aucun cas de traiter avec de l'interrogation des données par l'utilisation complète de la requête comme ceci :
Vous ne savez pas ce qu'est exactement à l'intérieur de $user $ou mot de passe variable quand il s'agit de l'utilisateur qui va le faire délibérément quelque chose de mal. Même XSS assainisseur de ne pas traiter avec quelqu'un qui intrants combinaison de devis, point-virgule ou un tiret caractère.
Donc dans ce cas, vous avez besoin d'apprendre ce Active Record de chose, car il a une entrée assainisseur capacité dédiée à prévenir l'injection SQL. Et ne vous inquiétez pas, ce genre de soutien de la fonction de chaînage comme ceci :
Mais rappelez-vous, il ne fonctionnera pas si vous ne pouvez toujours combiner d'habitude (partiellement) la fonction de requête à l'intérieur d'enregistrement active la fonction comme ceci :
Qui en fait pourrait être modifié comme ceci.
Le point est, utiliser tous les bits de la possibilité de CodeIgniter l'Enregistrement Actif et ne salissez pas avec elle.
Mais Si ce n'est pas le travail, il existe une alternative
Si vous avez une requête de longue durée et ne vous embêtez pas à le convertir à l'Actif de l'Enregistrement de style, vous pouvez désinfecter votre entrée manuellement par l'utilisation de cette fonction :
//Pour une utilisation à l'intérieur COMME requête
Et vous pouvez concaténer la variable d'environnement/échappés d'entrée à l'intérieur de votre requête.
Vous pouvez vérifier si vous var contenir seulement des lettres, des nombres, ce qui signifie que vous var mât en vous format défini.
avant de l'insérer dans la requête
Tout en acceptant la valeur du côté client, il vaut Mieux utiliser ce code,
Lors de l'insertion de mieux utiliser codeigniter l'insertion de la méthode,
Lors de l'utilisation de cette méthode codeingniter faire automatiquement tous s'échapper de sorte que nous avons pas besoin de faire échapper manuel.