Outils pour utilisateurs

Outils du site


langages:php:astuces

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
langages:php:astuces [10/01/2015 18:02]
julp [PDO/MySQL : limiter la casse en cas d'injection]
langages:php:astuces [16/05/2015 16:29] (Version actuelle)
julp [PDO/MySQL : limiter la casse en cas d'injection]
Ligne 16: Ligne 16:
 ====== PDO/MySQL : limiter la casse en cas d'injection ====== ====== PDO/MySQL : limiter la casse en cas d'injection ======
  
-Si vous n'exploitez pas la possibilité de pouvoir exécuter plusieurs requêtes en même tempsj'entends : +Déplacémis à jour et développé sur [[http://www.julp.fr/blog/posts/13-pdo-et-mysql-limiter-les-degats-en-cas-d-injection-sql]]
-<code php>$bdd->query('SELECT * FROM foo; SELECT * FROM bar');</code> +
-Alors vous devriez sérieusement envisager de compiler l'extension pdo_mysql sans cette option en modifiant le code source de ext/pdo_mysql/mysql_driver.c en commentant ces lignes : +
-<code c>#ifdef CLIENT_MULTI_STATEMENTS +
-        |CLIENT_MULTI_STATEMENTS +
-#endif</code> +
-Parce que le jour où vous avez une injection de ce type : +
-<code php>$bdd->query('SELECT * FROM users WHERE id = ' $_GET['id']);</code> +
-Si l'attaquant entre, par exemple, dans l'URL (je l'écris en non urlencodé par facilité) : +
-<code>?id=1;DROP TABLE users</code> +
-Les effets d'une injection comme celles-ci seront particulièrement dévastateurs. Par défaut, avec l'ancienne extension mysql, ce genre d'injection n'est pas possible car cette option est désactivée.+
  
-A partir de PHP 5.6.5, il sera possible de désactiver cette option en PHP sans avoir à patcher et recompiler PHP. Pour ce faire, il sera nécessaire d'ajouter l'option ''%%PDO::MYSQL_ATTR_MULTI_STATEMENTS => FALSE%%'' en 4e paramètre du constructeur PDO (le tableau //options//). Notez que vous ne pouvez pas passer par PDO::setAttribute, il serait trop tard donc purement et simplement ignorée, car cette option doit être désactivée au moment d'établir la connexion et pas après. 
langages/php/astuces.1420909361.txt.gz · Dernière modification: 10/01/2015 18:02 de julp