Jouons avec $_GET – Partie 1 : #jeudiconfession n°3

Jouons avec $_GET – Partie 1 : #jeudiconfession n°3

Intro

Je vais vous parler de sécurité, une faille de sécurité très connue qui est partout ou presque, en tout cas, dans beaucoup de plugins, thèmes et développements PHP.

Ready to go

Lisez ça, et dites moi si ça vous choque :

Vous voyez ce que je veux dire ? Oui, c’est une vulnérabilité XSS. Parce que vous ne pouvez et devez pas faire confiance à une donnée utilisateur, vous devez désinfecter (sanitize), toujours, et partout où vous en avez besoin..

Voici la démo d’un exploit : ?/foo=»>&ltscript>alert(document.cookie);&lt/script><a%20a=

Cette URL ouvre une popup contenant le cookie de l’utilisateur connecté (l’admin ?). Un hacker peut créer un script malicieux pour vous dérober ce cookie et usurper l’identité de l’administrateur.

Comment régler ça ?

La façon WordPress :

Utilisez la fonction esc_attr(), elle échape un attribut et évite une attaque XSS depuis un champ INPUT.

La façon PHP :

Utilisez la fonction htmlentities(), n’oubliez pas d’ajouter ENT_QUOTE où la faille XSS pourrait encore rester exploitable dans certains cas.

Outro

Cet article se nomme « $_GET » mais cela fonctionne avec « $_POST », « $_REQUEST », « $_COOKIE' », « $_SERVER » etc etc Même une donnée sortant de la base de données, et même si elle a été désinfectée AVANT son insertion, une fois en sortie, rien ne vous affirme qu’elle a pas été modifiée par autre chose 😉 #parano

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum