Una tecnica per evitare il filtraggio di parole comuni è quella che ho descritto nel titolo.
Tuttavia, perché questa tecnica funziona? SELECT non è lo stesso di SELSELECTECT per esempio.
Diciamo che ho inserito nella lista nera la parola <script> e lo ho sostituito con niente. Quindi <scr<script>ipt> diventa <script> .
Ecco perché i disinfettanti / purificatori html ben scritti applicano le regole in modo ricorsivo. Questo è solo quando l'ultima fase di risanamento non ha apportato modifiche al contenuto, si fermerà / non applicherà un altro giro delle regole di elaborazione. (Probabilmente fallirà e non restituirà alcun contenuto se sono necessari troppi cicli di elaborazione).
Funziona contro i disinfettanti rotti che usano semplicemente s.Replace("select","") . Quando lo applichi a selselectect , rimuove il select nel mezzo, ma poiché non viene eseguito di nuovo sull'output, lo split sel + ect diventa select e sopravvive al disinfettante.
Questo attacco non funzionerà contro qualsiasi disinfettante sano di mente.
Leggi altre domande sui tag web-application attack-prevention