Il codice JavaScript nel browser può essere modificato dall'hacker per ottenere l'accesso a risorse non autorizzate?

0

Ho un'app API Spring Boot sul lato server e l'app VueJS sul lato client. Dopo aver eseguito correttamente l'accesso, il lato server invia una risposta JSON che include accountType con valore VIEW_GOLD o VIEW_SILVER, se accountType è VIEW_GOLD, l'utente è diretto a visualizzare l'elenco di oggetti GoldBar e così via come in questo codice nel lato client VueJS:

         if (response.data) {
             if (response.data.accountType === 'VIEW_GOLD') {

               $this.$router.replace({ name: 'GoldBars'})

             } 
             else if (response.data.accountType === 'VIEW_SILVER') {

               $this.$router.replace({ name: 'SilverBars'})
            }

La domanda è: un hacker può visualizzare Goldbars quando accountType è VIEW_SILVER utilizzando il browser hacker come Tor?

    
posta user61766 01.08.2018 - 12:14
fonte

2 risposte

2

Ogni browser è dotato di potenti strumenti di sviluppo. Il solito tasto di scelta rapida per accedervi è F12 .

Qualsiasi utente può utilizzare il debugger JavaScript del proprio browser per impostare un punto di interruzione nella riga if (response.data) , attendere fino al raggiungimento del punto di interruzione, modificare il valore response.data.accountType per leggere VIEW_GOLD mentre l'esecuzione è in pausa e continua l'esecuzione del javascript.

Alcuni browser come Chrome consentono persino di modificare il codice JavaScript di un sito web mentre è caricato.

Non c'è nulla che tu possa davvero fare per impedire agli utenti di utilizzare questi strumenti.

Quindi segui il dogma non fidarti mai del cliente ! non gestire nulla relativo alla gestione delle autorizzazioni sul lato client. Il server deve conoscere il livello di autorizzazione dell'utente e semplicemente rifiutarsi di fornire qualsiasi informazione a cui l'utente non dovrebbe avere accesso.

A proposito: questo dogma non si applica solo alle applicazioni Web ma a qualsiasi forma di architettura client-server. Gli strumenti di debug per un client binario potrebbero non essere facilmente accessibili come quelli nei browser web, ma esistono.

    
risposta data 01.08.2018 - 13:34
fonte
1

Questo è un problema di autenticazione molto semplice. Hai il tuo codice lato server che dovrebbe fornire informazioni come risposta a una richiesta.

Vuoi che il tuo server fornisca i dati di una "GoldView" (qualunque essa sia) solo agli utenti autorizzati. Ciò richiede che il server riceva una prova che l'entità richiedente sia effettivamente autorizzata a ottenere questi dati.

Consegnare un token al login (può essere una semplice chiave di sessione, un JWT o qualcos'altro) è una buona idea MA assicurarsi che nessuno possa falsificare un token su richiesta. Inoltre, questo token deve essere inviato al server con ogni richiesta, richiedendo l'autenticazione.

In generale, supponi quanto segue:

  • Qualunque cosa sia contenuta nell'app VueJS, può essere letta da un utente malintenzionato (quando lo mandi a lui)
  • Tutto il tuo lato server riceve input malevoli fino a prova contraria
  • Il server deve controllare ogni richiesta e verificare i privilegi dei client richiedenti, prima di inviare i dati
  • A meno che la generazione di un token non richieda un segreto del server, un attacco può falsificare token arbitrari

P.S .: Tor non è un "browser hacker" e non può fare nulla di magico per bypassare le tue misure di sicurezza. È solo una rete proxy delicata che non dovrebbe interessarti quando si tratta dell'autenticazione lato server (è un argomento completamente diverso).

    
risposta data 01.08.2018 - 13:17
fonte

Leggi altre domande sui tag