Page 1 sur 1
Protection contres les injections SQL
Posté : 01 sept. 2008, 07:38
par Invité
bonjour;
j'ai un lien comme suite: index.php?contenu=1
est-il possible de le mettre ainsi: index.php/c1
j ai entendu parle de urlencode mais je savais pas comment le faire pour tous les liens
merci
Posté : 01 sept. 2008, 08:40
par Cyrano
Fais une petite recherche sur "url_rewritting", ce sera plus approprié que "urlencode"

Posté : 01 sept. 2008, 13:59
par Victor BRITO
De plus, je ne vois pas en quoi cela concerne les injections SQL. Je suppose que tu voulais parler de paramètres d'URL.
Posté : 01 sept. 2008, 14:59
par Djay51
C'est vrai, quel rapport avec les injections SQL ? Comme l'a dit Cyrano, le réécriture d'URL semble la meilleure solution pour ce que tu veux faire. Attention à ce que ton serveur supporte l'URL rewriting (ce qui reste très probable). A vérifier toutefois dans le phpinfo()
Posté : 01 sept. 2008, 15:17
par katagoto
Au pire tu pourra toujours le simuler grâce à la gestionde l'erreur 404, c'est marrant à faire,
oui oui je sort ^^
Posté : 02 sept. 2008, 05:35
par Invité
j'ai un lien comme suite: index.php?contenu=1
1 est le id que j'ai recupere, j'ai entendu parle qu'on peut faire ainsi:
index.php?contenu=select * from ...
Posté : 02 sept. 2008, 08:51
par B.Moncef
De toutes les manières que tu réécrives ton url ou pas, toutes les données externes définies utilisées dans une requête SQL doivent être protégées.
Posté : 02 sept. 2008, 09:20
par Victor BRITO
j'ai un lien comme suite: index.php?contenu=1
1 est le id que j'ai recupere, j'ai entendu parle qu'on peut faire ainsi:
index.php?contenu=select * from ...
Preuve, s'il en est, qu'il faut toujours vérifier si un $_GET['contenu'] a été récupéré et s'il correspond à une valeur à laquelle on s'attend.
Posté : 02 sept. 2008, 09:37
par DocType
j'ai un lien comme suite: index.php?contenu=1
1 est le id que j'ai recupere, j'ai entendu parle qu'on peut faire ainsi:
index.php?contenu=select * from ...
Utiliser mysql_real_escape_string

Posté : 02 sept. 2008, 15:43
par AB
D'ailleurs en cliquant sur la fonction mysql_real_escape_string() tu verras dans les exemples, un exemple d'attaque par injection SQL.
Donc
1/Vérifier si possible que la variable dans l'url correspond à une valeur attendue. Au minimum on peut souvent tester le type et/ou caster les valeurs numériques. Exemple
<php?
$contenu = isset($_GET['contenu'])? intval($_GET['contenu']) : 0;
?>
ainsi dans l'exemple ci-dessus $contenu sera obligatoirement une valeur numérique entière.
2/Dans tous les cas (ou presque) utiliser la fonction mysql_real_escape_string() pour protéger la requête.