Comment sécuriser et éviter les failles PHP pour son site ?

Sylvain Tutoriaux 0 commentaire(s) 8543 vue(s)

LA FAILLE XSS ? ÇA ME DONNE DE L'HERPÈS !

Par Juliian 

Si vous proposez à vos visiteurs un livre d'or, un forum (Premières versions de phpBB concernées, vérifiez vos mises à jour !) ou un espace où ils peuvent afficher des messages librement sur votre site, cet espace est potentiellement dangereux. Si en entrant ce code dans l'espace où les visiteurs peuvent poster un message, un pop-up s'ouvre, inquiétez vous. 

Pourquoi ? 
Vous êtes victimes d'une faille XSS. Mais qu'est-ce donc que cette bestiole là ? C'est l'exploitation d'un bug de sécurité permettant à vos visiteurs d'exécuter des scripts javascript, par exemple. Que peut on faire avec ça ? Voler le contenu de vos cookies de connexion (yabon, on va pouvoir se connecter à votre forum sous votre compte, ou à votre site dans la partie administration), ouvrir de la publicité librement sur votre site, rediriger le visiteur par des pages infectées par des virus, que de bonnes choses pleines de fer et de calcium. 

Comment y remédier ? 
Il y a un grand nombre de solutions pour pallier à ce problème. Definir votre texte comme étant une entité HTML, ou empêcher l'emploi de javascript. Pour se faire, il faut procéder comme suit : 
 

$message=str_replace("javascript:","",$message)



C'est une méthode que je qualifierais de "barbare". Elle supprimera juste le mot javascript des messages postés (et comme il est nécessaire d'ouvrir une balise de type {code}..). 
La méthode la plus sûre et la plus couramment utilisée restant la définition de vos messages comme des entités html : 
 

htmlentities ($message)