Comment securiser une requette SQL

Répondre
maxroucool
le 09/02/2007 à 23:41
maxroucool
Slt tlm,

je me demandais comment faire pour executer une requette SQL bien sécurisée.
J'ai lu http://www.td.unige.ch/wsh/securite_php_mysql.pdf[lien], et j'en deduis qu'il fodrait par un str_replace ac #, et un addslashes, mais c'est pas tout quand meme?!

Sinon, y'a longtemps, j'avais lu qu'il fallait faire des expression reguliere dans php, pour verifier la nature des données avant d'envoyer la requette a MySQL.

Est-ce que c'est vrai, et est-ce que c'est tout?!


Merci bp!
+++
LA GLOBULE
le 10/02/2007 à 01:18
LA GLOBULE
Plusieures regles simples :
- controler par des regex ou autres ce que tu comptes rentrer en base
- utiliser les fonctions d'escape adaptées à ta base de données (mysql_escape_string ou mysql_real_escape_string) : on doit utiliser addslashes QU'EN DERNIERE SOLUTION (c'est à dire lorsque PHP ne propose pas de fonction d'escape pour un SGBD, mais ce n'est pas le cas pour MySQL)
- utiliser la fonction intval de PHP au lieu de mysql_escape_string lors de condition sur des champs numériques
- ne pas afficher les erreurs de PHP et/ou de MySQL en production
- protéger tes champs SQL via des backquotes : `

Voila, si tu suis toutes ces regles à la lettre, ton site sera plus sécurisé que 80% des sites fais en PHP

Faut le reconnaitre : PHP est simple d'accès. Beaucoup de gens font de la merde avec en se disant "ca marche donc c'est bon". Ben oui mais non.... La programmation, c'est un vrai métier qui s'apprend, et la sécurité est un élément important lors du développement d'un site.

Je ne jette pas la pierre sur les autres, moi meme il y a 7 ans, je ne pretais que tres peu attention à ces problèmes (c'est d'ailleurs principalement pour ca que la v4 met du temps à sortir : je veux qu'elle soit "parfaite"), mais c'est une erreur.
maxroucool
le 10/02/2007 à 17:34
maxroucool
OK ben merci a tous les deux pour votre reponse. Je vais essayer de suivre tes indications a la lettre la globule!!

Je pensais me faire une classe (ce sera nouveau pour moi) pour justement faire des requettes SQL securisées, il doit surement en exister des toutes faites, vous en connaissez pas, pour que je puisse m'en aider.

+++
jocker
le 10/02/2007 à 20:23
jocker
une classe te permettra de simplifier l'envoi de tes requete mais encore faut il qu'elles soit bien utilisée.

je te conseille de regarde un script de forum punbb qui utilise une excellente classe mysql et tu verras dans les pages comment on l'utilise.

@++
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours