Desarrollo de aplicaciones seguras con 'NET - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Desarrollo de aplicaciones seguras con 'NET

Description:

Validaci n de la entrada. Inyecci n SQL. Control del criterio de una sentencia SQL desde ... Validar y limpiar cualquier entrada. Vigilar script , object ... – PowerPoint PPT presentation

Number of Views:171
Avg rating:3.0/5.0
Slides: 19
Provided by: downloadM
Category:

less

Transcript and Presenter's Notes

Title: Desarrollo de aplicaciones seguras con 'NET


1
Desarrollo de aplicaciones seguras con .NET
  • David Carmona
  • davidcsa_at_microsoft.com
  • División de Desarrolladores y Plataforma
  • Microsoft Ibérica

2
Qué vamos a ver?
Aprender y redefinir
Instalación y operaciones
Preguntas sobre seguridad
Security Push
Despliegue
Visión
Criterios aceptación seguridad
Planificación
Estabilización
Pruebas mínimo privilegio
Análisis amenazas
Desarrollo
Pruebas mínima exposición
Pruebas seguridad
Revisión de seguridad del diseño
Revisiones de código
Mejores prácticas de desarrollo
3
Errores más comunes
Porcentaje de aplicaciones
Fuente _at_Stake The Security of Applications
4
Validación de la entrada
  • Identificar posibles entradas
  • Campos HTML, controles WinForms
  • Servicios Web / Remoting / DCOM
  • QueryString, Cookies, Viewstate
  • Nunca confiar en su contenido !!
  • Validar en servidor
  • Buffer overruns
  • Inyección SQL
  • Cross-site scripting (XSS)

5
Validación de la entradaBuffer overruns
Stack
void UnSafe (const char datoSinValidar)
char4
0x01010101

char variableLocal4
int
0x01010101
int otraVariableLocal
Return address
0x0A3BA429
strcpy (variableLocal, datoSinValidar)

6
Validación de la entradaBuffer overruns
  • Causas más comunes
  • Copia de cadenas
  • Arrays
  • Reserva de memoria insuficiente
  • Defensas
  • Utilizar código manejado
  • Vigilar P/Invoke, código unsafe
  • Usar con cuidado strcpy, memcpy
  • Mejor equivalentes en strsafe.h
  • Habilitar switch /GS

7
Validación de la entrada Inyección SQL
  • Control del criterio de una sentencia SQL desde
    algún parámetro de entrada

SqlConnection conn new SqlConnection( serverlo
calhostDatabaseNorthwind user
idsapasswordpassword") string
sqlString"SELECT FROM Orders WHERE
CustomerID'" idCliente "'" SqlCommand cmd
new SqlCommand(sqlString, conn) conn.Open() Sq
lDataReader reader cmd.ExecuteReader() // ...
8
Validación de la entrada Inyección SQL
La gente buena introduce VINET
SELECT FROM Orders WHERE CustomerIDVINET'
9
Validación de la entradaInyección SQL
  • Utilizar comandos parametrizables
  • Al menos minimizarlo
  • Validar entrada en servidor
  • Usar cuentas SQL restringidas
  • No volcar mensajes de error

string sqlString"SELECT FROM Orders WHERE
CustomerID_at_custID" SqlCommand cmd new
SqlCommand(sqlString, conn) cmd.Parameters.Add("_at_
custID", idCliente)
10
Validación de la entradaCross-site scripting
  • Agujeros que permiten al hacker ejecutar código
    script en un cliente web
  • Dos entradas principales
  • Contempladas (foros, emails, librerías)
  • Ocultas (querystring, campos HTML)
  • Efectos habituales
  • Modificación del contenido
  • Envío de información
  • Robo de sesión

11
Validación de la entradaCross-site scripting
  • Validar y limpiar cualquier entrada
  • Vigilar ltscriptgt, ltobjectgt
  • Especialmente la que es mostrada después
  • Utilizar HttpOnly en IE6.1
  • Aprovechar ASP.NET
  • HTMLEncode para limpiar
  • ValidateRequest para validar todas las entradas

12
Autenticación falseableRobos de passwords
  • Nunca enviar por canales inseguros
  • Cuidado con RPC, Remoting
  • Proteger su almacenamiento
  • Establecer políticas
  • Utilizar hash con salt

Password
Salt
SHA1CryptoServiceProvider.ComputeHash
Hash
13
Autenticación falseableModificación de ticket
  • ASP.NET utiliza tickets en forma de URL o cookie
  • Robo de cookie
  • Cuidado con XSS
  • Usar RequireSSL y !Persistent
  • Modificación de cookie
  • Si contiene información del usuario
  • Utilizar MAC

14
Cifrado débilDefensas
  • Mejor sin secretos
  • Utilizar hash
  • Usar autenticación integrada
  • Si los hay mejor en servidor
  • No almacenar en querystring, campos ocultos,
    viewstate,
  • En cualquier caso usar siempre cifrado
  • Nunca uno propio!

15
Cifrado débilAlgoritmos de cifrado
  • El punto débil está en la clave
  • Para no trastear con ella
  • Cifrar con certificado digital
  • Acceso controlado por Windows
  • Usar DPAPI
  • Clave controlada por Windows
  • Dispositivos hardware

16
Sumario
  • La gran mayoría de las aplicaciones tienen
    agujeros de seguridad
  • Y la tuya?
  • La regla del 20 / 80
  • Validación de entrada
  • Autenticación
  • Cifrado
  • El 100 está en el resto del ciclo de vida

17
Para saber más
  • Seminarios de seguridad
  • TechNet Security Day
  • Barcelona 5 febrero
  • Madrid 12 febrero
  • Guías de arquitectura (PAGs)
  • http//msdn.microsoft.com/architecture/application
    /default.aspx
  • Ms Press
  • Writing Secure Code

18
davidcsa_at_microsoft.com
Write a Comment
User Comments (0)
About PowerShow.com