2008-11-17 22 views
23

¿Qué son otras mejores prácticas de seguridad de ASP.NET?Mejores prácticas de seguridad de ASP.NET

identificados hasta ahora se enumeran aquí:

  • genera siempre nuevas claves de cifrado y contraseñas de administrador cada vez que usted se está moviendo a una aplicación de producción.

  • Nunca guarde las contraseñas directamente o en forma encriptada. Siempre almacena contraseñas unidireccionales de una manera.

  • Guarde siempre las cadenas de conexión en la etiqueta de Web.config y encripte en la sección de configuración mediante el uso de proveedores de configuración protegidos (RSA o DPAPI). Consulte example here

  • Utilice el ID de usuario con menos privilegios para conectarse al servidor SQL o la base de datos que está utilizando. Por ejemplo, si solo está ejecutando procedimientos almacenados desde un determinado módulo de aplicación, debe crear una ID de usuario que tenga permisos para ejecutar solo.

  • Utilice PrincipalPermission si desea utilizar la seguridad de la base de roles en las páginas.

    [PrincipalPermission(SecurityAction.Demand, Role="Admin")] 
    public class AdminOnlyPage : BasePageClass 
    { 
        // ... 
    }
  • Siempre usa parámetros para evitar SQL Injection en las consultas SQL.

    1. Considere la posibilidad de instalar URLScan en sus servidores IIS para proteger contra la inyección de SQL. Además, para proteger contra los ataques XSS. Puede usar la biblioteca AntiXSS de MSFT en lugar de la construida para codificar la salida en lugar del código HtmlEncode incorporado que se encuentra en HttpServerUtility.
  • Siempre tenga en customErrors en web.config para hacerte errores/excepciones privadas

    < modo customErrors = "on" defaultRedirect = "MyErrorPage.htm"/>

  • En las aplicaciones web, siempre valide las entradas del usuario para las etiquetas html o cualquier secuencia de comandos.

  • Nunca almacene información confidencial, como contraseñas en las cookies.

  • No mostrar mensajes de error del sistema, restos de pila, etc., en caso de excepción.
+1

Esto debería ser una wiki. – NotMe

+0

eche un vistazo a http://gosecure.github.io/security-cheat-sheet/ – SPoint

Respuesta

11

Encontré el Developer Highway Code de Microsoft como una útil lista de verificación de seguridad.

+1

Sí, este es un buen recurso gratuito: imprima las listas de verificación y péguelas en la pared. –

+0

No pude encontrar ninguna lista de control de seguridad en ese enlace. – abhi

+0

@robert https://blogs.msdn.microsoft.com/wriju/2008/03/26/the-developer-highway-code-free-e-book/ Esto tiene una ubicación actualizada del pdf. Sin embargo, parece estar un poco anticuado ahora. – RominNoodleSamurai

0

Mientras se muestra el contenido de la base de datos en la página, se puede utilizar HttpServerUtility.HtmlEncode para codificar la salida para evitar ataques de Cross Site Scripting (XSS).

0

Considere la posibilidad de instalar URLScan en sus servidores IIS para proteger contra la inyección de SQL.
Además, para proteger contra los ataques XSS, utilizaría la biblioteca AntiXSS de MSFT en lugar de la construida para codificar la salida en lugar del código HtmlEncode integrado que se encuentra en HttpServerUtility.

4
  1. Nunca almacene información confidencial como contraseñas en las cookies.
  2. No muestre mensajes de error del sistema, seguimientos de pilas, etc. en caso de excepción.
Cuestiones relacionadas