Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-04-2009 10:45:44

neeux
Membre
Date d'inscription: 03-07-2008
Messages: 29

[Résolu][Zend_Db][1.7] Questions sur Zend_db_Select et l'injection sql

Bonjour

Je me pose une questions sur Zend_db_Select.

Peut-on / doit-on utiliser $db->quote dans Zend_Db_Select ?
Dans la doc je lis:

"Les possibilités offertes par Zend_Db_Select inclut : l'échappement des identificateurs et des valeurs, afin de réduire les risques d'attaques par injection SQL."

Qu'est ce qu'ils entendent par "réduire les risques".... ? c'est flou...

Dernière modification par neeux (06-04-2009 14:21:48)

Hors ligne

 

#2 06-04-2009 11:03:18

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Db][1.7] Questions sur Zend_db_Select et l'injection sql

Hello,

Ta question est-elle bien : qu'est ce que l'injection SQL ?, parce que si tu n'échappes pas (ou ne préparent pas tes données via un simple cast ou un validateur par exemple) alors tu ouvres des possibilités d'injection SQL.

Exemple : tu à une requête:

Code:

$login = $_POST['login'];
$password = $_POST['password'];
$sql = "select * from auth where login='$login' and password='$password'";

Avec un petit malin qui te passe un password = "mauvais_password or '1". Il pourra se loguer avec un mauvais mot de passe.

Si tu fais un $db->quote, son password deviendra "mauvais_password or \'1" ou "mauvais_password or ''1" (suivant les SGBD).

A+

Dernière modification par mikaelkael (06-04-2009 11:04:57)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 06-04-2009 11:17:33

neeux
Membre
Date d'inscription: 03-07-2008
Messages: 29

Re: [Résolu][Zend_Db][1.7] Questions sur Zend_db_Select et l'injection sql

Non je sais ce qu'est l'injection SQL....

La question que je me pose c'est si Zend_db_Select nous protège de l'injection SQL....

Avec ton exemple:

Code:

$login = $_POST['login'];
$password = $_POST['password'];
$this->select()->from("auth")
                      ->where("login = ?", $login)
                      ->where("password = ?", $password);

D'après le manuel dans ce cas on "réduit le risque" d'injection SQL.... Ce que je voudrais savoir c'est dans quelle mesure on le réduit??
Est ce que dans ce cas Zend_Db_Select fait ce qu'il faut pour échapper les variables $login et $password?

Dernière modification par neeux (06-04-2009 11:18:09)

Hors ligne

 

#4 06-04-2009 13:02:12

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_Db][1.7] Questions sur Zend_db_Select et l'injection sql

Hello,

where() te fais un quoteInto sur ta valeur (2ème paramètre). Mais bien sûr il ne faut pas faire :

Code:

$this->select()->from("auth")
                      ->where("login = '$login'")
                      ->where("password = '$password'");

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 06-04-2009 14:21:12

neeux
Membre
Date d'inscription: 03-07-2008
Messages: 29

Re: [Résolu][Zend_Db][1.7] Questions sur Zend_db_Select et l'injection sql

Merci beaucoup c'est ce que je voulais savoir...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages