Php: éviter les injections tout en préservant l’intégrité des données

Re bijour ^^

Encore une astuce à haute valeur philosophique …

Rapide rappel :

Pour éviter les SQL injections … la plupart du temps on fait appel à des addslashes, mysql_real_escape et … qui peuvent s’avérer dangeureuse suivant qu’on utilise du PHP5 ou PHP4 (et encore … la plupart du temps, il faut regarder les sous-sous version), alors il faut faire des fonctions qui teste tout et n’importe quoi … mais on est jamais sûr que sur tel ou tel serveur le script est sécurisé …

Alors voici une rapide astuce qui permet d’assurer la sécurité et l’intégrité des données (qui peut fonctionner tant que l’on ne fait pas d’insertion ^^).

Utiliser du md5!!! ou un autre type de chiffrage via crypt, … qui vous permettront de préserver l’intégrité des données transportées tout en ne portant pas préjudice au serveur SQL.

Exemple lors du login d’une personne, la requête associée pourrait être :

mysql_query(« select * from utilisateurs where login=' ».mysql_real_escape($_POST[‘login’]). »‘; »);

donc si un jour on transfert ce code sur un serveur ayant php 4.2 … le script ne marche plus ^^ (d’accord … qui irait passer de php5 à php 4.2 -> c’est pour l’exemple).

Par contre avec ce code :

mysql_query(« select * from utilisateurs where MD5(login)=' ».md5($_POST[‘login’]). »‘; »);

aucun problème … ^^ et vous êtes sûr que si ça renvoie une ligne ça soit la bonne ;).

Bon comme dit dans l’introduction, il faut quand même insérer des données (et ouai ça arrive parfois :p), et là … ça ne marcherait plus trop à part si vous êtes billingue français/md5.

A propos de billinguisme français/md5, y’a un superbe logiciel qui permet de craquer du md5 de façon sympa et très rapide les md5 (md5brute : http://www.tuxemu.se.nu/)