2009-02-02 12 views
9

Sto per creare un'app web in cui sarà necessario disporre di un modello di sicurezza che consenta a diversi utenti di accedere a diverse parti dell'applicazione e/o set di dati diversi all'interno di quelle parti specifiche dell'app. Sto discutendo tra i seguenti due metodi di implementazione della sicurezza:Quale è meglio, lista bianca o sicurezza lista nera, o entrambi?

Lista bianca: Per impostazione predefinita gli utenti non hanno accesso a nulla e hanno accesso alle cose di cui hanno bisogno.

o

Black List: By utenti predefiniti hanno accesso a tutto e il loro accesso viene rimosso dalle cose che non hanno bisogno.

Esiste una best practice su quale metodo è preferibile? Se esiste un altro metodo per affrontare meglio questo problema, sarebbe interessante anche saperlo.

Grazie.

risposta

21

Dalla classica carta "The Protection of Information in Computer Systems" (Saltzer & Schroeder 1975), che descrive otto importanti principi di progettazione, uno dei quali è: default

fail-safe: accesso alla Base decisioni su permessi, piuttosto che esclusione. Questo principio, suggerito da E. Glaser nel 1965, significa che la situazione di default è la mancanza di accesso, e lo schema di protezione identifica le condizioni in cui l'accesso è consentito . L'alternativa, in cui i meccanismi cercano di identificare le condizioni rifiutate, presenta la base psicologica errata per il sistema sicuro design. Un modello conservativo deve essere basato sugli argomenti per cui gli oggetti devono essere accessibili, piuttosto che sul motivo per cui non dovrebbero farlo . In un sistema di grandi dimensioni alcuni oggetti non sono considerati in modo appropriato, quindi una mancanza predefinita dell'autorizzazione è più sicura. Un errore di implementazione di progettazione o che autorizza esplicitamente l'autorizzazione tende a rifiutare l'autorizzazione, una situazione di sicurezza , dal momento che sarà rilevata rapidamente .D'altra parte, un disegno o attuazione errore in un meccanismo che esclude esplicitamente accesso tende a sicuro permettendo accesso, un guasto che può passare inosservato nell'uso normale. Questo principio si applica sia all'aspetto esterno del meccanismo di protezione sia all'implementazione sottostante.

11

Lista bianca. Con la lista nera, devi considerare tutti gli input che MIGHT non è valido. Con la whitelist, prendi in considerazione ciò che è valido.

3

La sicurezza è sempre basata su quella che viene chiamata "lista bianca". Bloccali da tutto e apri solo ciò di cui hanno bisogno.

0

La visualizzazione pessimistica indica la lista bianca, una visione ottimistica direbbe la lista nera. In linea, tengo la sicurezza in grande considerazione, quindi davvero se fosse necessaria una lista bianca/lista nera, sicuramente andare con una whitelist.

1

Nello scenario di un'applicazione Web utilizzerei sempre la white list. In genere è meglio dare a un utente troppo poco potere che troppo.

1

Lavorare sempre con una whitelist, in questo modo, anche se si è perso qualcosa non si è vulnerabili.

5

Immaginiamo di avere una serie di migliaia di chiavi della porta che è necessario dare a qualcuno l'accesso.

Preferiresti passare attraverso tutte le chiavi e cercare di eliminare quelle di cui questa persona non ha assolutamente bisogno e dare loro il resto? O preferiresti semplicemente dare loro le chiavi di cui hanno assolutamente bisogno e negare loro il resto?

Quale è il potenziale maggiore per un errore?

2

Non sai cosa non sai.

Esistono molti modi per evitare la convalida dell'utente (utilizzando UTF-8 o altra codifica, ecc.) E più di un modo per eseguire attacchi di cross-site scripting. Sei sicuro di poter inventare la lista nera che copre tutti i possibili attacchi? Questa lista potrebbe essere infinita.

Tuttavia, ottenere l'elenco di ciò che è buono è molto più semplice e, di conseguenza, molto più sicuro.

Problemi correlati