je me demandais comment faire pour executer une requette SQL bien sécurisée.
J'ai lu [lien=ca]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.
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.
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.