Bloquer les `id_rubrique=spip.php?id_rubrique=%3Cmarquee+onstart%3D%27alert%28%22XSS%22%29%27%3EText%3C%2Fmarquee%3E&page=majoliepage`
La doc indique que « les variables nommées id_xxx
sont toutes contrôlées comme étant obligatoirement des valeurs numériques entières »
En fait, c'est leur intval
qui est transmise dans ce cas, donc 0 à la place de %3Cimg+src%3D%27x%27+onerror%3D%27alert%28%22XSS%22%29%27%2F%3E
ou %3Cinput+type%3D%27text%27+value%3D%27XSS%27+onfocus%3D%27alert%28%22XSS%22%29%27%2F%3E
ou encore %3Ciframe+src%3D%27javascript%3Aalert%28%22XSS%22%29%27%3E%3C%2Fiframe%3E
etc
Mais quel est l'intérêt de continuer après avoir reçu un tel truc ? L'écran pourrait-il pas plutôt tout simplement échouer les hits dont les id_
sont crades ?
Genre if ( ((string)(int)$id_truc) !== (string)$id_truc) { die('byyye') }
Ça économiserait des cycles CPU, ça serait servi plus vite et ça ferait gagner du temps aux script kiddies
PS : outre les évidentes tentatives de hack citées plus haut, mes sites reçoivent aussi assez souvent des id_truc=12'
ou id_truc=12"
(qui m'apparaissent également être des tentatives de hack) que l'écran transforme en id_truc=0
, mais qui sont inutilisables ainsi et bénéficieraient aussi d'un die()
charitable.