2014-12-18 7 views
6

Un div (contiene informazioni sicure) nella mia pagina HTML deve essere visualizzato sulla base di un'autorizzazione.la sicurezza è ng-se nascondere informazioni sicure

  • Quanto è sicuro usare ng-se nascondere il div in questo scenario?
  • Un utente sarà in grado di modificare e visualizzare il div che contiene informazioni sicure?
+4

Qualsiasi cosa non è sicura se la si invia al frontend –

+2

Durante la scrittura di un'applicazione basata sul Web, si deve presupporre che gli utenti possano accedere a qualsiasi cosa si invii al browser. Se si desidera limitare l'accesso ad alcuni dati, farlo sul lato server. – hon2a

+0

Un utente con una piccola quantità di informazioni per il debug del web sarà in grado di visualizzare tutto ciò che è nel tuo codice HTML, che sia visibile o meno. – JLRishe

risposta

15

Non si deve nascondere nulla per motivi di sicurezza nel 'front-end' (cioè utilizzando Angolare). E 'banale per un utente di accedere contenuti nascosti utilizzando ng-if, ng-show, ng-hide, ecc

Si dovrebbe invece nascondere questi dati sul back-end e non passarlo al browser, in primo luogo.

Semplice regola di sicurezza: se il browser ha accesso ad esso, così fa l'utente.

2

Quanto è sicuro usare ng-se nascondere il div in questo scenario?

Per niente sicuro.

Un utente sarà in grado di modificare e visualizzare il div che contiene informazioni protette?

Assolutamente sì.

2

In realtà in js angolari è possibile eseguire il debug, in modo che l'utente possa accedere all'oggetto che si sta utilizzando per commutare ng-if e modificarne la proprietà. potresti voler usare ng-bind-html e bing quel div come un modulo che sarebbe più sicuro ma non complettamente

3

ng-if non rende le informazioni associate nella vista. Tuttavia, dipende dai dati in $ scope se visualizzare o meno le informazioni. Inoltre, le informazioni visualizzate sono anche in $ scope. Utilizzando le estensioni del browser, come Batarang (o anche semplice javascript), un utente può visualizzare l'intera gerarchia $ scope con i valori contenuti.

Quindi ... no :) non aspettatevi AngularJS per nascondere le informazioni sensibili per voi

+0

Credo che se imposti debugInfoEnabled (false) non sarai in grado di accedere all'ambito con Batarang? –

+0

Ho appena realizzato che è possibile riattivarlo in qualsiasi momento digitando angular.reloadWithDebugInfo(); in console. –

6

aggiunta ai punti già citati in queste risposte, si dovrebbe tenere a mente che le webapps quando si è in esecuzione, l'utente ha accesso al codice dell'intero cliente. Quindi, non dovresti nemmeno pensare a nascondendo i dati sensibili lato client.

Inoltre, dovresti sapere qualcosa in più sulla differenza tra ng-if e ng-show, ng-hide. Citando dal sito web di AngularJS

ngIf differisce da ngShow e ngHide in quel ngIf completamente rimuove e ricrea l'elemento nel DOM piuttosto che cambiare la sua visibilità tramite la proprietà CSS display. Un caso comune quando questa differenza è significativa è quando si usano selettori CSS che si basano sulla posizione di un elemento all'interno del DOM, come le pseudo-classi: first-child o: last-child.

Quindi, è NON sicuro per nascondere i dati sensibili a front-end. A seconda del livello di autorizzazione dell'utente, puoi effettuare una chiamata API separata per recuperare i dati. Sul server, verificare l'autorizzazione e restituire la risposta appropriata.

Problemi correlati