Hoy !
AspiGeek a écrit :
J'aimerai savoir s'il y a d'autres recommandation pour éviter de faire le lapin de 6 semaines quand mes scripts seront en ligne
Houlà ! Voilà bien un sujet dont on ne fait jamais le tour !
J'aurais tendance à commencer en disant qu'aucune protection n'est fiable à 100% (histoire de mettre dans l'ambiance) ne serait-ce que parce que ça peut venir du paramétrage de ton hébergeur (register_globals à on...) ou du comportement des internautes (je me connecte sur ton site depuis un ordinateur public et je ne me déconnecte pas...) ou encore d'autre chose dont je ne connais même pas l'existence ! Le moins risqué est encore de ne pas dépasser un pagerank de 1 (0 c'est encore mieux

) et de ne pas utiliser d'outils dont les sources sont publiques (la seule fois où je me suis fait hacker cela venait d'une faille de sécurité de PHPBB).
Ensuite je dirais que le niveau de sécurité à atteindre est vraiment variable : il n'est pas le même pour un formulaire de contact, pour un forum, pour un formulaire d'achat en ligne ou pour un formulaire de connexion au ministère de la défense... D'ailleurs si cette notion est vraiment importante on fait appel à un prestataire.
Donc après cette introduction je ne vais te parler que de ce que je connais à mon petit niveau (le B.A.BA quoi) :
* pour éviter les injections SQL : mysql_real_escape_string
* pour éviter le cross site scripting (ou XSS) : htmlspecialchars
* côté paramétrage beaucoup d'hébergeurs laissent par défaut des valeurs qui risquent de poser problème mais qui, s'ils étaient changés, empêcheraient (ou en tout cas gêneraient) le bon fonctionnement de beaucoup de "vieux" sites. Par contre ils permettent en général de les modifier pour son site en passant par .htaccess ou autres moyens (sur OVH je mets à off REGISTER_GLOBALS, MAGIC_QUOTES et SESSION_USE_TRANS_SID).
* autant que possible préférer les versions les plus récentes de PHP (6 est mieux que 5 qui est mieux que 4...)
* je ne sais pas comment c'est techniquement possible mais on peut intercepter les variables en clair au moment où elles sont transmises donc pour des données vraiment sensibles (genre carte bleue) ça ne coûte rien d'utiliser SSL (uri commençant par
https://...)
* pendant la phase de développement on a besoin du plus d'infos possibles (warnings, utilisation de mysql_error...) mais une fois en ligne il ne faut rien dévoiler du tout :
error_reporting(0);
* il existe une forme d'attaque de formulaires de connexion (brute force) qui consiste à essayer en automatique une foultitude de couples login/password : plusieurs solutions comme ne pas autoriser une nouvelle tentative avant un certain délai ou limiter le nombre d'essais possibles pour une IP donnée, etc.
* limiter la durée de vie des cookies de sessions (
un exemple sur developpez.com)
* euh... bon ben là tout de suite je ne vois plus !
Un peu de lecture :
*
http://fr.php.net/manual/fr/security.php
*
http://www.phpsecure.info/v2/.php
*
une pitite recherche Google (pour rire)
Edit: j'oubliais :
* les mots de passe ne doivent jamais être en clair (cookies, bdd, et même code php au cas où il y aurait un plantage serveur et que le code soit affiché en clair -bon... c'est quand même peu probable-).
* ne jamais faire confiance à ce qui a été saisi dans un formulaire et toujours s'attendre au pire (pour 1% à cause des hackers et pour 99% à cause des "lubies" des internautes).
Modifié par Heyoan (05 Jun 2009 - 22:02)