Vorrei offrire un servizio web tramite JSONP e mi chiedevo se fosse necessario disinfettare il valore dal parametro callback.Devo disinfettare il parametro di callback da una chiamata JSONP?
Il mio script lato server attuale assomiglia a questo momento (più o meno Codice è in PHP, ma potrebbe essere qualsiasi cosa davvero..):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
Questo è un classico XSS-vulnerabilità.
Se ho bisogno di igienizzare, allora come? Non sono riuscito a trovare abbastanza informazioni su quali potrebbero essere le stringhe di callback consentite. Cito da Wikipedia:
mentre l'imbottitura (prefisso) è in genere il nome di una funzione di callback che viene definito all'interno del contesto di esecuzione del browser, ma può anche essere un assegnamento di variabile, un'istruzione if, o qualsiasi altro prefisso dell'istruzione Javascript.
sembra buono. Ci proverò. –
Puoi usare ctype_alpha ($ _ GET ['callback']) per controllare facilmente in questo caso se sei su un locale inglese, altrimenti le funzioni di filtro funzionano bene. Si noti inoltre che l'intestazione deve essere impostata su 'content-type: application/json; charset = utf-8 'quando si restituisce una risposta jsonp. – Josh
corretto. E grazie per l'informazione. –