Page 1 sur 1

htmlentities, html_special_char, mysql_real_escape_string et

Posté : 29 sept. 2007, 16:17
par netsupra
Bonjour,
une grande question me torture l'esprit depuis que je developpe et devient de plus en plus importante depuis que l'echappement des caractere ne se fait plus automatiquement (MAGIC_QUOTES) :

je n'ai jamais utilise la fonction addslashes pour la raison simple que je n'ai jamais vu l'utilité qu'elle a.
En effet :
- dans mes liens contenant des caracteres html, j'utilise la fonction htmlentities;
- lors des affichages de variables utilisateur, j'utilise la fonction html_special_char;
- lors du stockage de variable utilisateur en BDD, j'utilise la fonction mysql_real_escape_string.

Aurais-je louppé un épisode ou dans le cas contraire, quelqu'unpourrait-il m'expliquer l'utilité de la fonction addslashes

Merci,
Netsupra

Posté : 29 sept. 2007, 17:46
par naholyr
Elle est utile typiquement dans les deux cas suivants :
- Construction d'une requête SQL (mais on lui préfèrera mysql_real_escape_string() ou toute autre fonction dédiée selon le moteur).
- Construire une commande Shell (mais on lui préfèrera escapeshellarg()).
- Construire une expression dédiée à passer dans eval() (mais là il y a bien d'autres précautions à prendre en plus).
Et probablement d'autres cas, mais j'imagine qu'à chaque fois il existe une fonction dédiée qui est plus conseillée.

En fait il s'agit d'une fonction de protection générique, donc forcément moins efficace que la dédiée, mais qui suffit dans 99% des cas. Et surtout il s'agit du pendant de l'infame option magic_quotes_gpc, qui permet aux dévs trop fainéants pour se poser des questions d'avoir des scripts non sensibles aux injections SQL (quand bien même ils ne sauraient même pas ce que c'est).

Et sinon oui je fais le même constat que toi, plus le temps passe, et moins j'appelle cette fonction.

Posté : 29 sept. 2007, 19:05
par AB
...
Et sinon oui je fais le même constat que toi, plus le temps passe, et moins j'appelle cette fonction.
+1

Posté : 30 sept. 2007, 01:41
par netsupra
Merci, vou me rassurez ;)