Questo tipo di attacco è possibile, ma questo è il modo sbagliato per evitare che contro di essa. Se un hacker può modificare i dettagli del modulo, può facilmente inviare i dati segreti tramite un AJAX GET
senza inviare il modulo. Il modo corretto per prevenire un attacco XSS è di essere sicuri di codificare tutti i contenuti non attendibili sulla pagina in modo tale che un hacker non abbia la possibilità di eseguire il proprio codice JavaScript in primo luogo.
Ulteriori informazioni sulla codifica ...
Il codice di esempio su StackOverflow è un ottimo esempio di codifica. Immagina che guaio sarebbe se ogni volta che qualcuno pubblicava qualche esempio di JavaScript, in realtà veniva eseguito nel browser. Per esempio,
<script type="text/javascript">alert('foo');</script>
se non fosse per il fatto che così codificato frammento di sopra, si sarebbe appena visto una finestra di avviso. Questo è ovviamente uno script piuttosto innocuo: avrei potuto codificare alcuni JavaScript che hanno rubato il tuo cookie di sessione e l'ho inviato a evil.com/hacked-sessions. Fortunatamente, tuttavia, SO non presume che tutti siano ben intenzionati e in realtà codificano il contenuto. Se si dovesse visualizzare il codice sorgente, per esempio, si vede che così ha codificato il mio perfettamente valido HTML e JavaScript in questo:
<script type="text/javascript">alert('foo');</script>
Così, anziché incorporare effettivi <
e >
caratteri dove ho usato, sono stati sostituiti con i loro equivalenti codificati in HTML (<
e >
), il che significa che il mio codice non rappresenta più un tag di script.
In ogni caso, questa è l'idea generale della codifica. Per maggiori informazioni su come deve essere codificata la, dipende da cosa si sta utilizzando lato server, ma la maggior parte di tutti i framework web include una sorta di utility di codifica HTML "pronta all'uso". La responsabilità dell'utente è quella di garantire che il contenuto fornito dall'utente (o altrimenti non attendibile) sia SEMPRE codificato prima del rendering.
In che modo il JavaScript dannoso entra nel modulo in primo luogo? Il modulo di pagamento consente di visualizzare il contenuto inviato dall'utente (XSS)? Quello sarebbe un modulo di pagamento insolito. –