Sicurezza angolare in $ scope

1

Per la nostra app quando un utente ha effettuato l'accesso lo stiamo emettendo un token memorizzato in sessione e stiamo usando $ rootScope per memorizzare i suoi dettagli.

Questo è ciò che stiamo facendo

if(sessionStorage.loggedIn && sessionStorage.token){
  addonService.get({
    customer_token : sessionStorage.token
  }).$promise.then(function(data) {
        $rootScope.user = data.user;
        $rootScope.address = data.address;              
  });
}

Questa procedura è sicura? C'è un modo in cui un hacker può dirottare la variabile utente da $ scope? Se questa non è la procedura migliore, come posso migliorare il mio codice?

    
posta Muhammad Raihan Muhaimin 17.05.2015 - 18:51
fonte

1 risposta

2

Mentre la domanda riguarda specificamente AngularJS, il problema risiede nel fatto che tutto ciò che è completamente controllato ed eseguito sul lato client non può essere considerato attendibile. Per tutto ciò che è accettato dal lato client DEVE essere valido sul server prima dell'uso. Questo è l'unico modo per sentirsi relativamente sicuri dell'operazione.

La modifica di $ rootScope o QUALSIASI oggetto sul lato client è banale come attività. Il modo più semplice per farlo è aprire una sessione di firebug e utilizzare la sezione runner dello script della console per modificare arbitrariamente qualsiasi campo o aggiungere / rimuovere qualsiasi campo in qualsiasi oggetto.

Per non parlare di angolare - è possibile anche sovrascrivere (o sostituire) alcuni metodi della finestra o altri oggetti incorporati usando questa tecnica.

Quindi la convalida in linea sul server non si fida delle operazioni e degli input eseguiti nello spazio client.

    
risposta data 18.05.2015 - 04:20
fonte

Leggi altre domande sui tag