Je voudrais offrir un webservice via JSONP et je me demandais, si j'ai besoin d'assainir la valeur du paramètre de rappel.Ai-je besoin de désinfecter le paramètre de rappel d'un appel JSONP?
Mon script courant côté serveur ressemble à ceci actuellement (plus ou moins de code est en PHP, mais pourrait être quelque chose de vraiment..):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
Ceci est un XSS-vulnérabilité classique.
Si j'ai besoin de le désinfecter, alors comment? J'ai été incapable de trouver suffisamment d'informations sur ce qui pourrait être autorisé des chaînes de rappel. Je cite Wikipedia:
Alors que le rembourrage (préfixe) est généralement le nom d'une fonction de rappel qui est définie dans le contexte d'exécution du navigateur, il peut également être une affectation de variable, une instruction if, ou tout autre préfixe d'instruction Javascript.
semble bon. Je vais essayer ça. –
Vous pouvez utiliser ctype_alpha ($ _ GET [ « callback »]) pour vérifier facilement dans ce cas, si vous êtes sur un lieu anglais, sinon les fonctions de filtrage fonctionnent bien. Notez également que l'en-tête doit être défini sur 'content-type: application/json; charset = utf-8 'lors du retour d'une réponse jsonp. – Josh
Fixé. Et merci pour l'information. –