Ti suggerisco di leggere sulla difesa contro XSS. OWASP ha buone risorse. È necessario applicare la convalida dell'input corretta a tutti i valori di input e scappare correttamente tutti i valori dinamici che si inseriscono nel documento HTML di output. Ci sono molte risorse online su come prevenire XSS.
Per quanto riguarda la tua specifica applicazione, non ci hai fornito abbastanza informazioni per diagnosticare il problema. Hai provato ad aprire my_php_file.php?nsextt="..."
nel tuo browser, per vedere cosa succede? Viene visualizzata una finestra di avviso? Se visualizzi l'origine della risposta, vedi un attributo " style=...
" in qualsiasi punto della risposta? Inoltre, anche se dici di non utilizzare alcun parametro GET in my_php_file.php, è possibile che il codice in my_php_file.php includa un altro file PHP o possa chiamare qualche altra funzione che produce output non sicuri? Sospetto che tu possa avere una vulnerabilità XSS che consente l'inserimento di un nuovo attributo nel mezzo di qualche elenco di attributi da qualche parte.
Hai menzionato l'approccio che stai utilizzando per disinfettare i parametri su altre pagine. Vorrei dire che questo non è il metodo di sanitizzazione dell'input corretto. strip_tags
non impedisce XSS ( strip_tags
non è garantito per rimuovere tutti i tag e anche se lo ha fatto, rimuovere tutti i tag non è sufficiente, in quanto si può ancora montare un attacco XSS iniettando attributi senza iniettare nuovi tag). Una buona regola è che se stai usando strip_tags
, probabilmente stai facendo qualcosa di sbagliato.
Più in generale, la convalida dell'input non riguarda il buttare ciecamente ogni funzione di stripping che è possibile pensare ai dati. Invece, dovresti controllare che l'input corrisponda a una lista bianca o regexp appropriata, a seconda del tipo di dati. E, quando si generano i dati, si dovrebbe scappare in un modo adatto al contesto in cui verranno inseriti i dati. Ad esempio, se lo inserisci nel contesto HTML standard tra tag, puoi sfuggire ai dati con htmlescapechars
. Se lo stai inserendo come link (come valore di un attributo href), devi assicurarti che sia un URL formattato correttamente con uno schema sicuro (http o https sono sicuri, javascript non lo è). C'è ancora molto da dire sulla convalida dell'input e sull'output dell'output: guarda le risorse OWASP per un sacco di ottime informazioni su questo argomento.