Protezione di percorsi / pagine protetti con JWT

0

Immaginiamo di avere un sito Web con un front-end React che esegue il rendering di due pagine, una è "Visualizza dati" e l'altra è una pagina di benvenuto con un modulo di accesso.

Scenario: accedi e il server lo accetta e ottieni un JWT. Quando si fa clic su "Visualizza dati", al server viene inviato il token e viene visualizzato come valido. Cosa restituisce il server per consentire al front-end di visualizzare la pagina, effettua semplicemente il nuovo invio del token? Non è possibile che il front-end lo salvi? Una risposta REST non può essere falsificata / modificata all'interno degli strumenti di sviluppo del browser? In caso contrario, so che è possibile impostare variabili JavaScript e così, quindi dovrei immaginare che non sarebbe difficile accedere alla pagina protetta. Posso proteggere i dati, ma non capisco come proteggere correttamente la pagina stessa.

Per reiterare le varie domande:

  1. Che cosa restituisce il server, invia semplicemente il token?
  2. Impossibile che una risposta REST venga falsificata / modificata negli strumenti di sviluppo del browser
  3. In caso contrario, so che è possibile impostare variabili JavaScript e così, quindi dovrei immaginare che non sarebbe difficile accedere al pagina protetta. Se questo è il caso, qual è la soluzione?
posta Geth V 18.12.2018 - 18:48
fonte

1 risposta

0

Penso che il problema qui sia un fraintendimento di ciò che deve essere protetto. Lascia che ti spieghi la tua situazione per assicurarmi di comprenderla:

  • Hai un frontend JS che esegue il rendering di tutte le pagine
  • Alcune pagine non dovrebbero essere accessibili senza autenticazione
  • Non sei sicuro di come proteggere quelle pagine, dato che gli utenti potrebbero falsificare le risposte "mostra questa pagina" al cliente

La domanda importante è, la pagina deve essere protetta, o i dati sulla pagina devono essere protetti?

Se sono solo i dati importanti, è sufficiente che il server eviti di inviare i dati a meno che l'utente non sia autenticato. L'utente può visualizzare la pagina tutto ciò che desidera, ma non avrà i dati che rendono la pagina utile, quindi non ha molta importanza.

Se la pagina stessa deve essere tenuta segreta (sei sicuro ? Mi sembra strano mantenere un layout segreto ...) allora non devi includerlo nel tuo frontend. Se lo metti nel tuo frontend e lo mandi agli utenti non autenticati, saranno in grado di trovarlo se sono determinati.

    
risposta data 19.12.2018 - 15:36
fonte

Leggi altre domande sui tag