2011-09-16 9 views
5

Nel tentativo di semplificare la modifica dei gruppi ai quali gli utenti sono autorizzati contro nell'applicazione Web ASP .NET MVC, ho inserito i nomi dei gruppi nel mio Web.config come appSettings.È una cattiva pratica mettere le informazioni sensibili in un file Web.config?

<add key="User" value="VDP ICMD Users"/> 
<add key="SuperUser" value="VDP ICMD Super Users"/> 
<add key="Administrator" value="VDP ICMD Administrator"/> 

I valori relativi ai nomi di gruppi attuali di Active Directory. Poi, nel mio controller, utilizzando mia abitudine AuthorizeAttribute posso semplicemente scrivere

[AuthorizeAD(GroupKeys = "User")] 

La mia domanda è, è cattiva pratica per inserire le informazioni sensibili come i nomi dei gruppi in un file web.config in cui possono essere facilmente modificati? È facile per qualcuno accedere al file Web.config se non effettuando l'accesso al server stesso?

+3

Se qualcuno può accedere al tuo server e accedere a web.config, ci sono problemi più grandi di cui preoccuparsi ... –

+0

I nomi di gruppo sono una chiave per la corretta autenticazione di lavoro contro AD con il tuo sito web. Qualcuno nella tua organizzazione è nel gruppo con restrizioni più elevate, può elevare i privilegi accedendo al web.file di configurazione e semplicemente aggiungendo/nomi di gruppi di versioni per elevare i privilegi di scrittura/modifica, ad esempio –

+0

Concordato @Justin Satyr. Non sono preoccupato per questo, questo è il lavoro dell'amministratore di sistema. Sono più preoccupato se qualcuno può modificare o addirittura visualizzare il file di configurazione senza ottenere l'accesso al server. – link664

risposta

4

Se è facile o di non accedere al web.config dipende delle vostre politiche infraestructure e di sicurezza. Non è un file sfogliabile, quindi se qualcuno vuole rubare il web.config deve entrare nel tuo server. (Un'altra opzione sarebbe un buco di sicurezza esistente o futuro sul flusso ASP.NET, è successo prima, ma speriamo che questo sia il caso meno probabile).

È buona norma archiviare le informazioni meno sensibili possibili ma è davvero difficile non avere nulla.

È tuttavia possibile crittografare informazioni sensibili sul file di configurazione. Here hai una spiegazione che spiega come farlo.

2

in generale dovrebbe essere sicuro fino a quando non si inseriscono password in testo normale che potrebbero essere rubate anche internamente da chiunque abbia accesso alle cartelle di distribuzione.

IIS e il motore ASP.NET su di esso sono progettati per impedire l'accesso al file web.config dal Web in modo tale che tale file non venga annusato o rubato tramite il browser o la connessione HTTP di sempre.

Detto questo, in base all'esperienza, inserisco tali informazioni in una tabella di configurazione nel database e creerei le classi di wrapping nel codice ASP.NET che incapsulano la lettura di tali valori di configurazione in modo da non avere troppa logica per recuperare quei dati tutto intorno.

I vantaggi dei parametri di configurazione nel database sono minimi o di facile implementazione, facili da modificare senza la modifica manuale dei file, il backup automatico e per rispondere alle vostre preoccupazioni principali, il vostro database dovrebbe già essere protetto da accessi non autorizzati.

+0

Quindi la tua risposta al mio esempio è che in termini di sicurezza va bene inserire le informazioni in Web.config come ho fatto io, tuttavia per gli altri motivi che hai menzionato lo inseriresti nel database? – link664

+0

va bene fintanto che nessuno può toccare il server web dall'interno, perché se lo fa può diventare amministratore in un momento. Dal momento che il database dovrebbe essere più sicuro, utilizzerei il database. D'altra parte se qualcuno può toccare web.config allora può anche disabilitare la sicurezza lì ... –

+0

Esattamente. Come ha detto @Justin Satyr, se ottengono l'accesso al server e al mio web.config, ho problemi più grandi. Non solo disabilitano la sicurezza, ma potrebbero reindirizzare l'applicazione a un altro database e cambiare un sacco di altre cose. – link664

0

No. Questo non è sicuro in un dato contesto.

I nomi di gruppo sono una chiave per la corretta autenticazione di lavoro contro AD con il tuo sito web. Nel tuo scenario, se qualcuno nella tua organizzazione si trova nel gruppo con restrizioni più elevate, può elevare i privilegi accedendo al file web.config e semplicemente aggiungendo/modificando i nomi dei gruppi per elevare i propri privilegi di scrittura/modifica, ad esempio o accedere a informazioni riservate , come gli stipendi o i contratti, o anche i piani CEO per un'azienda. Vuoi questi problemi?

Leggi l'articolo di MSDN How to encrypt Web.config

+0

Ma per quanto ne so, l'unico modo per accedere al file Web.config è quello di ottenere l'accesso al server di hosting e, come commentato da @JustinSatyr, se riescono a farlo ho dei problemi più grandi. – link664

Problemi correlati