21-11-2008, 04:41 PM
Ce qu'un lecteur non averti doit comprendre en lisant ce sujet, c'est qu'il ne doit absolument pas se fier au typage qui n'est finalement pas utile. C'est bien de savoir que ça existe (pour ça, ton article est intéressant), mais concrètement ça ne sert pas.
PHP est pauvrement typé, c'est un fait. Emuler un typage fort n'aurait strictement aucun sens.
Le débat qui est tenu ici dépasse le contexte de ce sujet et n'est pas constructif (c'est d'ailleurs pour ça que je ne le scinde pas) puisqu'on parle de choses impossible :
On en revient donc au sujet : Se protéger contre l'injection SQL.
PHP est pauvrement typé, c'est un fait. Emuler un typage fort n'aurait strictement aucun sens.
Le débat qui est tenu ici dépasse le contexte de ce sujet et n'est pas constructif (c'est d'ailleurs pour ça que je ne le scinde pas) puisqu'on parle de choses impossible :
- Non, le DROP ne fonctionnera pas puisque le pilote MySQL n'effectue qu'une action par requête (puis l'utilisateur n'a pas les droits) ;
- Non le typage ne peut pas protéger efficacement de l'injection SQL (puisqu'il ne peut pas protéger les chaînes de caractères) ;
On en revient donc au sujet : Se protéger contre l'injection SQL.
Plume a écrit :Même sans framework, tu peux pas faire ça chez moi. J'aurai -comme tout le monde ici présent- plutôt tendance à faire ça :
Code PHP :<?php
$id = '0; DROP TABLE table';
$intId = mysql_real_escape_string($id);
'SELECT * FROM table WHERE id = ' . $intId . ';';
Et donc, typage ou pas, j'm'en fous, ça passe pas.Beaucoup de gens (souvent les débutants mais pas uniquement) pense que mysql_real_escape_string() protège, mais il ne sert qu'à protéger les chaînes qu'on ne peut pas pas contrôler.
Sephi-Chan