120 likes | 247 Views
Algunos tips en Seguridad ASP.NET 2.0. Jorge Oblitas joblitas@microsoft.com. Qué hay de nuevo en ASP.NET 2.0. Autenticación por formularios y membresía Role Manager DPAPI managed Wrapper Cambios en los archivos de configuración Encriptamiento de archivos de configuración Health Monitoring
E N D
Algunos tips en SeguridadASP.NET 2.0 Jorge Oblitas joblitas@microsoft.com
Qué hay de nuevo en ASP.NET 2.0 • Autenticación por formularios y membresía • Role Manager • DPAPI managed Wrapper • Cambios en los archivos de configuración • Encriptamiento de archivos de configuración • Health Monitoring • Code Access Security • Permisos SMTP (Full, High y Medium) • Mejoras en el MachineKey
Validación del ingreso de datos • No confiar solamente en ASP.NET request validation. • Validar el input por longitud, rango, formato y tipo. • Validar el input de todas las fuentes como QueryString, cookies, y controles HTML controls. • No confiar solamente en la validación del lado del cliente. • Evitar usar un nombre de archivo ingresado o una ruta. • No hacer ECO de un input que no es de confianza. • Si tenemos qeu escribir data en la que no confiamos, primero hacerle un encode
Autenticación por formularios • Usar Membership providers en lugar de autenticación personalizada. • Usar SSL para proteger las credenciales y las cookies de autenticación. • Si no es posible usar SSL, considerar reducir el tiempo de vida de la sesión. • Validar la información de Login del usuario. • No almacenar las passwords directamente en el user store. • Obligar a usar strong passwords. • Poteger el acceso a las credenciales. • No persistir las cookies de autenticación. • Restrigir los tickets de autenticación a las conexiones HTTPS. • Considerar dividir el sitio web en áreas públicas y áreas restringidas • Usar nombres únicos para las cookies y paths
Autorización • Uno puede estar autorizando contra: • Recursos del sistema • Recursos de la aplicación • Recursos del usuario • Role Manager
Code Access Security • Elegir un nivel que no exceda los requerimientos de la aplicación • Crear una política personalizada si la aplicación necesita permisos adicionales • Usar Medium trust policy en entornos de hosting compartido • Considerar Code access security para aplicaciones con Partial Trust
Acceso a Datos • Encriptar las cadenas de conexión • Usar cuentas de menor privilegio para e acceso a datos • Usar autenticación Windows en donde sea posible. • Si se usa autenticación Windows, usar una cuenta trusted service. • Si no puedes usar una cuenta del dominio, considerar una cuenta espejo. • Al usar SQL authentication, usar strong passwords. • Al usar SQL authentication, proteger las credenciales a través de la red. • Al usar SQL authentication, proteger las credenciales en los archivos de configuración. • Validar el input que no es de confianza que pasa a los métodos de acceso de nuestra data. • Al construir queries SQL queries, usar parámetros SQL type safe • Evitar queries dinámicos que aceptan input del usuario
Manejo de Excepciones • Usar manejo de excepciones estructurado. • No revelar detalles de la excepción al cliente. • Usar global error handler para capturar excepciones no manejadas
Manipulación de Parámetros • No tomar decisiones de seguridad basados en parámetros que puedan ser accedidos en el lado del cliente. • Validar todos los inputs parámetros. • Evitar almacenar data sensible en el ViewState. • Encriptar ViewState si contiene data sensible.
Administración de la sesión • No confiar solamente en las opciones de administración del estado del lado del cliente. • Proteger el servicio de estado fuera del proceso. • Proteger SQL Server session state.
Preguntas Justin Smith justins@wintellect.com