Protection contres les injections SQL

Invité
Invité n'ayant pas de compte PHPfrance

01 sept. 2008, 07:38

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

Mammouth du PHP | 19672 Messages

01 sept. 2008, 08:40

Fais une petite recherche sur "url_rewritting", ce sera plus approprié que "urlencode" ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 2937 Messages

01 sept. 2008, 13:59

De plus, je ne vois pas en quoi cela concerne les injections SQL. Je suppose que tu voulais parler de paramètres d'URL.

Eléphanteau du PHP | 25 Messages

01 sept. 2008, 14:59

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()

Mammouth du PHP | 1668 Messages

01 sept. 2008, 15:17

Au pire tu pourra toujours le simuler grâce à la gestionde l'erreur 404, c'est marrant à faire,

oui oui je sort ^^
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Invité
Invité n'ayant pas de compte PHPfrance

02 sept. 2008, 05:35

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 ...

Eléphanteau du PHP | 38 Messages

02 sept. 2008, 08:51

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.

Mammouth du PHP | 2937 Messages

02 sept. 2008, 09:20

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.

Mammouth du PHP | 1776 Messages

02 sept. 2008, 09:37

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 :wink:

ViPHP
AB
ViPHP | 5818 Messages

02 sept. 2008, 15:43

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.