La sécurité sur le web, règle #2 : Evitez le code peu sûr
Règle n°2 : Evitez le code peu sûr (ou sachez à qui vous fier)
Si vous ne savez coder du PHP que depuis 2 semaines, je vous déconseille fortement de mettre en ligne votre site avec vos scripts avant au moins 6 mois de rôdage. Sinon vous ferez sûrement le bonheur de quelques script kiddies qui seront très heureux de découvrir vos failles de débutant. Failles qui ont d'ailleurs été probablement recopiées dans des tutoriels à droite à gauche sur le net, écrits par des gens qui ne savent en général pas grand chose de la sécurité[1].
Prenons un exemple récent, je vais sur un site de vidéo amateur, de là je vois que j'ai des adresses sur les liens du type "http://www.videoroxor.net/index.php?p=accueil" et ben hop moi je vais tester "http://www.videoroxor.net/index.php?p=miam" renvoie un erreur ou je vois qu'il veut inclure miam.php. Oh mais c'est super ça, tiens essayons avec une adresse ? "http://www.videoroxor.net/index.php?p=http://google.fr/" Oh ça marche, et voilà je peux très facilement envoyer à ce serveur un script PHP qui sera ainsi exécuté. Cette faille est connue et reconnue, mais nombre de sites la reproduisent et pas que des sites personnels.
En est exemple une faille récente dans une plateforme de blog française très connue. La prévisualisation du blog était du genre http://admin.superblogroxor.com/preview.php?url=http://bohwaz.superblogroxor.com/. Evidemment je me suis empressé de tester avec url=http://google.fr/, ça marche, là le cas n'était pas de l'exécution de code mais de la visualisation, le fichier preview.php faisait en fait un simple affichage de ce qui lui était donné. Ainsi avec ce fichier on pouvait visualiser tous les fichiers du serveur, notamment les fichiers de mot de passe, ou le code source de l'application, qui aurait d'ailleurs pu être analysé pour tenter de trouver un moyen de faire exécuter du code source. C'était une faille majeure et à priori présente sur le site depuis son lancement. Je n'ose penser à ce qu'on pu faire des personnes mal intentionnées de cet accès (qui donnait de fait accès aussi aux mots de passe de la base de données) avant que je ne signale cette faille qui fut heureusement corrigée dans les heures qui suivirent.
Cet exemple est bien illustrateur du fait qu'aucune structure, amateur ou professionnelle, n'est à l'abri de laisser des failles béantes dans ses pages web. Ainsi si vous travaillez en équipe, assurez-vous dans votre équipe que vous relisez le code les uns des autres pour éviter les erreurs d'étourderie ou de méconnaissance. Si vous travaillez seul, évitez les applications reconnues pour leurs failles, et évitez de faire du code sans avoir une idée minime des prérequis en sécurité dont vous devez vous assurer.
[1] Bien que les choses bougent un peu et que vous ne trouverez plus trop de tutoriel sur include (notamment) qui ne fasse pas mention des problèmes de sécurité, mais il en reste toujours.