Ho un endpoint api che restituisce un nuovo token API in JSON all'utente se sono connessi al mio sito Web con solo i cookie di sessione utilizzati per l'autenticazione.
Sto provando a scrivere una parte di codice che viene caricata automaticamente su un dominio diverso che invierà una richiesta GET a quell'endpoint, utilizzando i cookie di tali persone per vedere se riesco a recuperare maliziosamente il loro nuovo token API. Sto solo controllando se il mio endpoint è sicuro o se è possibile. Voglio solo richieste loggate dallo stesso dominio in grado di raggiungere quell'endpoint. Non sono sicuro se questo è effettivamente considerato CSRF dal momento che non ci sono stati cambiamenti di stato. Esiste una politica CORS, quindi non sono sicuro se ciò mi impedisca di farlo. E la vernice è il front-end con X-XSS-Protection: 1 abilitato.
Cose che ho provato, semplicemente avendo una pagina di dominio diversa per caricare l'endpoint. Con un utente ha effettuato l'accesso in un'altra scheda. Restituisce un 200, con i cookie attesi dell'utente connesso, ma non la risposta JSON.
<img src="https://mydomain/endpoint"width="0" height="0" border="0">
Il sotto restituisce un 200 con i cookie corretti dell'utente loggato, ma nessuna risposta JSON. Credo che questo non stia restituendo dati a causa della stessa politica di origine nel browser. Correggimi se sbaglio.
document.write('<img src="https://mydomain/endpoint?cookie='+document.cookie+'" />')
Sia XMLHttpRequest che JQuery per eseguire una richiesta GET sull'endpoint di destinazione, sempre da un altro dominio e utente connesso a una scheda diversa. Restituisce un 401 non autorizzato e nessun cookie. Forse c'è qualche jquery aggiuntivo di cui ho bisogno per acquisire e inviare cookie con la richiesta.
$.get('https://mydomain/endpoint', function(responseText) {
alert(responseText);});
Oltre a copiare la richiesta di arricciatura dalla console degli sviluppatori di Chrome di una richiesta Web corretta all'endpoint API. Sorprendentemente il ricciolo non restituisce il nuovo token anche con i parametri attesi & biscotti. Forse anche a causa delle stesse politiche sull'origine.
Altre idee, è possibile anche con ciò che ho descritto?