My question is- why don't we store what ever is going to server as parameters and if these parameters are reflected in HTML response then discard it or encoded it
Qualche parametro? Quindi, se cerco "Hello" e la pagina di risposta contiene il testo "Ecco i risultati per Hello", viene violata?
Ci deve essere qualche criterio per ciò che conta come potenzialmente pericoloso, altrimenti ogni modulo sul web si romperà in questo modo. Potresti iniziare con "qualsiasi parametro con <
in", ma che dire degli attacchi di attributo come onmouseover=
o JavaScript injection come '; alert(document.cookie)
? E come fermi un parametro di appena <
dalla rottura di ogni tag sulla pagina? Non c'è una risposta a tenuta stagna, ed è per questo che la rilevazione finisce per essere un complesso casino di regole euristiche e non di un modello pulito, a tenuta stagna.
Personalmente ritengo che il rilevamento XSS riflesso lato client sia profondamente fuorviante: in linea di principio destinato al fallimento e in pratica peggio che inutile , ma se lo farai dovrai limitarne l'ambito perché la riflessione del contenuto è una proprietà comune di cui il web ha bisogno per funzionare correttamente, non sempre un attacco.