Recentemente sono entrato in una società con un milione di app PHP in più code di codice. L'approccio alla sicurezza di XSS sembra essere quello di filtrare l'output ogni volta che lo sviluppatore ci pensava. Non sorprendentemente, non hanno catturato tutto, e abbiamo alcune vere opportunità XSS dozzine.
In una vita passata ho utilizzato l'approccio sostenitori di Rasmus : filter
tutti gli input per essere protetti da XSS, e non sudare sul display. Questo approccio ha funzionato bene: la maggior parte dei dati funziona perfettamente la maggior parte del tempo e il codice che utilizza filter(UNSAFE_RAW)
non è esattamente vietato, ma sicuramente riceve un'attenzione ulteriore nelle revisioni del codice.
Il problema che sto avendo è: come si fa a migrare da un approccio all'altro? Sembra che ora dovrò codificare tutti i contenuti del database e giocare a whack-a-mole per rimuovere tutti i nuovi bug a doppia codifica che scoprirò. (Dovrebbe essere un piccolo più facile dato che posso grep per l' esistenza di htmlspecialchars()
ma non posso grep per la sua assenza .: ))
Una risposta davvero utile potrebbe essere un blog su un progetto di successo o addirittura un post-mortem.