Quello che hai non sembra un reindirizzamento aperto per me.
In primo luogo, questo codice sta facendo un XMLHttpRequest o ciò che normalmente chiamiamo una richiesta Ajax. XMLHttpRequest sono limitati dallo stesso criterio di origine e quindi non sarai mai in grado di passare un dominio dannoso in esso perché il metodo semplicemente si bloccherà se non è lo stesso dominio.
In secondo luogo, stai utilizzando location.pathname
. Quale location.pathname
ti restituisce è un url relativo all'host corrente. Ciò significa che l'url completo sarà sempre {current_host} / url nel tuo codice. Pertanto, non accederai mai a un host malintenzionato per errore.
In terzo luogo, non hai l'input dell'utente. Di solito, la vulnerabilità di reindirizzamento aperto si trova nella pagina di accesso che spesso contiene un returnUrl come parametro nell'URL per reindirizzare l'utente sulla pagina giusta dopo aver effettuato l'accesso. Se non protetto, questo returnUrl può essere utilizzato per reindirizzare l'utente a un malintenzionato posto. Quindi, per avere la vulnerabilità, è necessario avere un input da qualche parte. Dov'è l'input dell'utente?
In conclusione, non penso che questa parte del codice sia vulnerabile al reindirizzamento aperto, ma potrebbe esserlo anche un'altra parte.
Nota
Il punto di forza della vulnerabilità di reindirizzamento aperto è che utilizzano la tua fiducia in un sito web che conosci bene per ottenere la tua fiducia per il loro sito Web dannoso. Ad esempio, se esegui l'accesso con google e successivamente ti reindirizzano a malicious_site.com, è più probabile che ti fidi di malicious_site.com poiché ritieni che sia correlato a google anche se non sono completamente correlati.