2011-09-16 16 views
5

En un intento de facilitar que un administrador modifique los grupos a los que los usuarios están autorizados en mi aplicación web ASP .NET MVC, he puesto nombres de grupo en mi Web.config como appSettings.¿Es una mala práctica poner información confidencial en un archivo Web.config?

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

Los valores están relacionados con los nombres reales de los grupos de Active Directory. Luego, en mis controladores, utilizando mi costumbre AuthorizeAttribute puedo escribir simplemente

[AuthorizeAD(GroupKeys = "User")] 

Mi pregunta es, ¿es una mala práctica de poner información sensible como los nombres de grupo en un archivo Web.config en el que puedan ser fácilmente cambiado? ¿Es fácil para alguien acceder al archivo Web.config que no sea ingresando al servidor?

+3

Si alguien puede acceder a su servidor y acceder a su web.config, tiene problemas más grandes de los que preocuparse ... –

+0

Los nombres de grupo son una clave para la autenticación de trabajo apropiado contra AD con su sitio web. Si alguien de su organización está en el grupo con mayores restricciones, puede elevar los privilegios accediendo a la web.archivo de configuración y simplemente agregar/editar nombres de grupo para elevar escritura/edición de privilegios, por ejemplo, –

+0

De acuerdo @Justin Satyr. No estoy preocupado por eso, ese es el trabajo del administrador del sistema. Estoy más preocupado si alguien puede cambiar o incluso ver el archivo de configuración sin tener acceso al servidor. – link664

Respuesta

4

Si es fácil o no acceder a la web.config que depende de sus políticas de Infraestructura y de seguridad. No es un archivo explorable, por lo que si alguien quiere robar la web, debe ingresar a su servidor. (Otra opción sería un agujero de seguridad existente o futuro en el flujo ASP.NET, sucedió antes, pero esperamos que este sea el caso menos probable).

Es una buena práctica almacenar la información menos sensible posible, pero es muy difícil no tener nada.

Sin embargo, puede cifrar información sensible en su archivo de configuración. Here tiene un andador que explica cómo hacerlo.

2

en general debe ser seguro siempre que no ponga contraseñas de texto sin formato que podrían ser robadas incluso internamente por cualquiera que tenga acceso a las carpetas de implementación.

El motor IIS y ASP.NET está diseñado para evitar el acceso al archivo web.config desde la web, por lo que dicho archivo no se olfatearía ni se lo robarían a través del navegador o la conexión HTTP.

Dijo que, basado en la experiencia, pondría esa información en una tabla de configuración en la base de datos y crearía clases de ajuste en el código ASP.NET que encapsula la lectura de dichos valores de configuración para no tener demasiada lógica para buscar esos datos por todos lados.

Las ventajas de los parámetros de configuración en la base de datos son sencillas o de implementación cero, fáciles de cambiar sin necesidad de editar archivos manualmente, realizar copias de seguridad automáticas y responder a su inquietud principal; su base de datos ya debe estar protegida del acceso no autorizado.

+0

¿Es su respuesta a mi ejemplo que, en términos de seguridad, está bien poner la información en Web.config como la tengo, sin embargo, por las otras razones que mencionó, la pondría en la base de datos? – link664

+0

está bien, siempre y cuando nadie pueda tocar el servidor web desde adentro, porque si lo hace puede convertirse en administrador en un momento. Como la base de datos debería ser más segura, usaría la base de datos. Por otro lado, si alguien puede tocar web.config entonces también puede desactivar la seguridad allí ... –

+0

Exactamente. Como dijo @Justin Satyr, si tienen acceso al servidor y a mi web.config, tengo problemas mayores. No solo deberían deshabilitar la seguridad, sino también podrían volver a asignar la aplicación a una base de datos diferente y cambiar muchas otras cosas. – link664

0

No. Esto no es seguro en un contexto dado.

Los nombres de grupo son una clave para la autenticación de trabajo correcto contra AD con su sitio web. En su escenario, si alguien de su organización está en el grupo con mayores restricciones, puede elevar los privilegios accediendo al archivo web.config y simplemente agregando/editando nombres de grupo para elevar sus propios privilegios de escritura/edición, por ejemplo o acceder a información confidencial , como salarios o contratos, o incluso planes de CEO para una empresa. ¿Quieres esos problemas?

Leer artículo de MSDN How to encrypt Web.config

+0

Pero hasta donde yo sé, la única forma de acceder al archivo Web.config es obtener acceso al servidor de alojamiento, y como comentó @JustinSatyr, si pueden hacer eso, tengo problemas mayores. – link664

Cuestiones relacionadas