• Save
Seguridad en web
Upcoming SlideShare
Loading in...5
×
 

Seguridad en web

on

  • 33,473 views

 

Statistics

Views

Total Views
33,473
Views on SlideShare
33,471
Embed Views
2

Actions

Likes
2
Downloads
3
Comments
1

2 Embeds 2

https://twitter.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • me gusta
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Seguridad en web Seguridad en web Presentation Transcript

  • Introducción, ataques y contramedidas
    • Día 1
      • Protocolo HTTP
        • HTTP Request
        • HTTP Response
        • Cookies
        • Identificadores de sesión
      • XSS (Cross Site Scripting)
        • Introducción
        • Tipos de XSS
        • Demostración XSS
    Práctica: nc Práctica: webscarab Práctica: XSS
    • Día 2
      • SQL Injection
        • Conceptos clave SQL
        • SQL Injection Directa
        • Blind SQL Injection
      • Otros ataques
        • OWASP Top Ten
        • Web 2.0
      • Contramedidas
  • Introducción Cliente Servidor WEB Servidor de Aplicación Servidor de BDD HTTP SQL
  • Introducción
  • El protocolo HTTP
    • Hypertext Transfer Protocol
    Cliente Servidor WEB HTTP Request HTTP Response Cabecera Línea en blanco Cuerpo del mensaje (opcional) Mensaje HTTP
  • HTTP REQUEST
    • GET /books/search.asp?q=wahh HTTP/1.1
    • Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg,application/xshockwaveflash,
    • application/vnd.msexcel,application/
    • vnd.mspowerpoint,application/msword, */*
    • Referer: http://wahh-app.com/books/default.asp
    • Accept-Language: en-gb,en-us;q=0.5
    • Accept-Encoding: gzip, deflate
    • User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
    • Host: wahh-app.com
    • Cookie: lang=en;
    • JSESSIONID=0000tI8rk7joMx44S2Uu85nSWc_:vsnlc502
    Cliente Servidor WEB HTTP Request
    • GET /books/search.asp?q=wahh HTTP/1.1
    HTTP REQUEST
    • En una línea y separados por espacios, empieza con 3 elementos:
    • Método HTTP :
      • GET -> Nota: Las peticiones GET no tienen cuerpo ( solo cabecera )
      • POST
      • Otros: HEAD / TRACE / OPTIONS / PUT
    • URL (Uniform Resource Locator) :
      • Absoluta: protocol://hostname[:port]/[path/]file[?param=value]
      • Relativa: /[path/]file[?param=value]
    • Versión HTTP :
      • HTTP/1.1 -> Nota: en la versión 1.1 la cabecera Host es obligatoria
      • HTTP/1.0
    Método URL Versión
  • Métodos HTTP
    • HEAD — This functions in the same way as a GET request except that the server should not return a message body in its response. The server should return the same headers that it would have returned to the corresponding GET request. Hence, this method can be used for checkingwhether a resource is present before making a GET request for it.
    • TRACE — This method is designed for diagnostic purposes. The server should return in the response body the exact contents of the request message that it received. This can be used to detect the effect of any proxy servers between the client and server that may manipulate the request. It can also sometimes be used as part of an attack against other application users (see Chapter 12).
    • OPTIONS — This method asks the server to report the HTTP methods that are available for a particular resource. The server will typically return a response containing an Allow header that lists the available methods.
    • PUT — This method attempts to upload the specified resource to the server, using the content contained in the body of the request. If this method is enabled, then you may be able to leverage it to attack the application; for example, by uploading an arbitrary script and executing this on the server.
  • Cabeceras comunes
    • Connection:
    • Para informar a la otra parte que cierre la conexión TCP tras finalizar la comunicación.
    • Content-Encoding:
    • Tipo de codificación del cuerpo del mensaje.
    • Transfer-Encoding:
    • Tipo de codificación de la comuniación.
    • Content-length:
    • Tamaño en bytes del cuerpo del mensaje.
    • Content-Type:
    • Indica el tipo de contenido del cuerpo del mensaje.
  • Cabeceras HTTP Request
    • Referer:
    • URL desde la que se ha originado la petición (p.e. click enlace)
    • User-Agent:
    • Información del navegador y otro software del cliente que origina la petición.
    • Host:
    • Nombre del servidor (hostname) al que se realiza la petición.
    • (un mismo servidor puede servir páginas de diferentes dominios)
    • Cookie:
    • Información adicional almacenada en la parte cliente.
    • Accept:
    • Para informar al servidor el tipo de contenido que puede aceptar el cliente.
    • Accept-Encoding:
    • Para informar al servidor el tipo de codificaciones que acepta el cliente.
    • Authorization:
    • Para el envío de credenciales según el modelo de autenticación HTTP (tres tipos).
    • If-Modified-Since:
    • If-None-Match:
    • Cabeceras para el uso de información de la caché
  • HTTP RESPONSE
    • HTTP/1.1 200 OK
    • Date: Sat, 19 May 2007 13:49:37 GMT
    • Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix)
    • Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc
    • Pragma: no-cache
    • Expires: Thu, 01 Jan 1970 00:00:00 GMT
    • Content-Type: text/html;charset=ISO-8859-1
    • Content-Language: en-US
    • Content-Length: 24246
    • <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
    • <html lang=”en”>
    • <head>
    • <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”>
    • ...
    Cliente Servidor WEB HTTP Response
    • HTTP/1.1 200 OK
    HTTP RESPONSE
    • En una línea y separados por espacios, empieza con 3 elementos:
    • Versión HTTP :
      • HTTP/1.1
      • HTTP/1.0
    • Código de estado (Status code) :
      • Código numérico que indica el resultado de la respuesta
      • 200: respuesta correcta
    • Texto explicativo :
      • Una forma mas amigable que explica el estado de la respuesta
      • Puede ser cualquier texto y no se interpreta por los navegadores
    Versión Código Texto
  • Códigos de estado
    • 1xx -> Informacional .
      • 100 Continue -> El servidor enviará una próxima respuesta para completar la petición.
    • 2xx -> Respuesta satisfactoria .
      • 200 Ok -> respuesta satisfactoria.
      • 201 Created -> respuesta satisfactoria a una petición PUT.
    • 3xx -> Redirección .
      • 301 Moved Permanently -> redirige permanentemente en el navegador a una URL diferente.
      • 302 Found -> redirige temporalmente en el navegador cliente a una URL diferente.
    • 4xx -> Respuesta de error .
      • 400 Bad Request -> petición incorrecta.
      • 401 Unauthorized -> modelo de autenticación HTTP ( cabecera WWW-Authenticate)
      • 403 Forbidden -> intento de acceso a un recurso sin la autenticación necesaria.
      • 404 Not Found -> recurso no existente o no encontrado.
      • 405 Method Not Allowed -> Método HTTP no permitido (por ejemplo PUT).
      • 413 Request Entity Too Large -> la petición es mas larga que lo que el servidor puede manejar.
      • 414 Request URI Too Long -> como la anterior pero relacionado con la URL solicitada.
    • 5xx -> Error en el servidor.
      • 500 Internal Server Error -> El servidor ha dado un error interno.
      • 503 Service Unavailable -> El servidor web está OK porque responde peticiones, no obstante puede ser que no responda el servidor de aplicación.
  • Cabeceras HTTP Response
    • Server:
    • Banner del servidor (Software, Sistema, …) -> ¡OjO! Se puede cambiar
    • Set-Cookie:
    • Lo envía el servidor para que el cliente lo almacene y lo envíe como cabecera en el resto de peticiones
    • WWW-Authenticate:
    • Informa de los tipos de autenticación soportados por el servidor.
    • Pragma: ETag: Cache-control: y Expires:
    • Instrucciones para el uso de la cache en el navegador cliente
  • Práctica: nc
    • $ nc www.google.es 80
    • GET http://www.google.es/ HTTP/1.0
    • HTTP/1.0 200 OK
    • Date: Sat, 04 Sep 2010 19:29:35 GMT
    • Expires: -1
    • Cache-Control: private, max-age=0
    • Content-Type: text/html; charset=ISO-8859-1
    • Set-Cookie: PREF=ID=2382abd93eefa012:TM=1283628575:LM=1283628575:S=10uM56tsT6mN3sU2; expires=Mon, 03-Sep-2012 19:29:35 GMT; path=/; domain=.google.es
    • Set-Cookie: NID=38=RALvBu2mSABpEIQ1wfUPtanVUIM2T-D5c9p8qRHC1Z1Ee87uAys6TP1Z_jPT71RL-ohyDexGCGWF85z8WM1Pqa98z2nc3HAa2yb2f6xKjJ4UG16sc6FZuqhZkd09dk1z; expires=Sun, 06-Mar-2011 19:29:35 GMT; path=/; domain=.google.es; HttpOnly
    • Server: gws
    • X-XSS-Protection: 1; mode=block
    • <!doctype html><html><head><meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=ISO-8859-1&quot;><title>Google</title><script>window.google={
    • < … >
    • })();</script>
    • $ nc google.com 80
    • GET / HTTP/1.1
    • Host:google.com
    • HTTP/1.1 302 Found
    • Location: http://www.google.es/
    • Cache-Control: private
    • Content-Type: text/html; charset=UTF-8
    • Set-Cookie: PREF=ID=f9b8b87599f7c60b:TM=1283627875:LM=1283627875:S=1tYg-Rm18u9ekgaf; expires=Mon, 03-Sep-2012 19:17:55 GMT; path=/; domain=.google.com
    • Set-Cookie: NID=38=lhsVzYl2cds8BbmbuZk3mwcldkJeHQGtOhwkudF1eeMJlTRTGvziEzb5jlMnaK95D9dPE8_auqchJAqeeFIf1weTRNMhO_uk1056a-xtf1BPAiFDmKZ9rk6VhaQHC2P_; expires=Sun, 06-Mar-2011 19:17:55 GMT; path=/; domain=.google.com; HttpOnly
    • Date: Sat, 04 Sep 2010 19:17:55 GMT
    • Server: gws
    • Content-Length: 218
    • X-XSS-Protection: 1; mode=block
    • <HTML><HEAD><meta http-equiv=&quot;content-type&quot; content=&quot;text/html;charset=utf-8&quot;>
    • <TITLE>302 Moved</TITLE></HEAD><BODY>
    • <H1>302 Moved</H1>
    • The document has moved
    • <A HREF=&quot;http://www.google.es/&quot;>here</A>.
    • </BODY></HTML>
  • Práctica: nc
    • $ nc telefonica.es 80
    • GET / HTTP/1.1
    • HOST:telefonica.es
    • HTTP/1.1 302 Object moved
    • Location: http://www.telefonica.es/portada/index.html
    • Connection: close
    • $ nc telefonica.es 80
    • GET / HTTP/1.1
    • HTTP/1.1 400 Bad request
    • Server: Sun-ONE-Web-Server/6.1
    • Date: Sat, 04 Sep 2010 19:21:34 GMT
    • Content-length: 147
    • Content-type: text/html
    • Connection: close
    • <HTML><HEAD><TITLE>Bad request</TITLE></HEAD>
    • <BODY><H1>Bad request</H1>
    • Your browser sent a query this server could not understand.
    • </BODY></HTML>
  • Cookies
    • El servidor envía una cookie
    • nombre=valor[;nombre=valor]*
    • El cliente automáticamente adjunta esa cookie a sus peticiones
    • expires
      • Fecha a partir de la que la información deja de ser válida.
    • domain
      • Nombre de dominio para la que es válida la información.
    • Path
      • Ruta para la que es válida la información.
    • secure
      • Para que la información de las cookies solo se transmita a través de HTTPS.
    Cliente Servidor WEB Set-Cookie : tracking=tI8rk7joMx44S2Uu85nSWc Cookie : tracking=tI8rk7joMx44S2Uu85nSWc
  • Identificadores de sesión
    • Dentro de una cookie
    • SessionID
    • JSESSIONID -> The Java Platform
    • ASPSESSIONID -> Microsoft IIS server
    • ASP.NET_SessionId -> Microsoft ASP.NET
    • CFID/CFTOKEN -> Cold Fusion
    • PHPSESSID -> PHP
    • WebLogicSession -> BEA WebLogic
  • WebScarab
    • Herramienta para el testeo de aplicaciones Web
      • Funciona como proxy para capturas las peticiones HTTP
      • Se pueden incluir plug-ins para la identificación de vulnerabilidades
    • Herramienta desarrollada por la OWASP
      • http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project
  • Otras herramientas
    • Spyke Proxy
      • http://www.immunitysec.com/resources-freesoftware.shtml
    • Paros Proxy
      • http://www.parosproxy.org/
  • Repaso
    • El protocolo HTTP
      • HTTP Request
      • HTTP Response
      • HTTP Methods
      • Cookies
      • Identificadores de sesión
    • Práctica: nc
    • Práctica: webscarab
  • El enemigo invisible
    • Se basa en javascript
    • El objetivo es el usuario no el servidor
    • Una de las vulnerabilidades mas extendidas
    • Poca concienciación de la misma
    • Al basarse en javascript
      • Se puede acceder al dom
        • Permite modificar el contenido
        • Modificar direccionamiento de formularios
        • Obtención de información (Ajax)
  • XSS - % de ataques sufridos
    • No Persistente
      • A través de un enlace malicioso. (Ej ZP como Mr Bean)
    • Persistente
      • Embebidos en el propio código de la página debido a una vulnerabilidad en el código. (Gusano de MySpace)
    • Posibles vectores de inyección
      • Tinyurl
      • Html embebido
      • E-mail
    • Posibles efectos
      • Campos maliciosos
      • Phising
      • Robo de información
    • Enlace
      • http://www.prueba.com/search.php?p=<script>alert(‘hola_mundo’)</script>
        • Vector de ataque
          • Parametro no validado : p
          • Valor introducido: <script>alert(‘hola mundo’)</script>
        • Resultado
          • Ventana alerta con texto hola mundo.
    • Se encuentra en la propia web visitada
    • No es facilmente identificable
    • Se ejecuta cada vez que accede un usuario
    • ¿Qué permite?
      • Obtención de credenciales de usuario
      • Robo de cookies
      • Obtención de información del usuario (listado de amigos, añadirse como contacto,..)
  •  
    • Identificar que tipo de código HTML se puede introducir
    • Ejemplo de XSS No Persistente
      • Cadena de texto introducida
        • <script>alert(0)</script>
    • ¿Qué se puede hacer con un XSS en la web?
      • Robar credenciales
      • Simular una página oficial
      • ‘ Alterar’ el contenido de una página
    • Identificar vector de ataque
      • Parametros vulnerables (no validados)
    • Identificar información o daño a hacer
      • Sustituir imagen corporativa
      • Robar usuario y contraseña
    • Determinar como engañar al afectado
      • Mail falso.
      • Suplantación de identidad
    • Identificación de las posibles victimas
      • Usuarios de la web
    • Envió masivo aprovechando la vulnerabilidad
      • Html embebido que envía información que se quiere obtener
    • Obtención de credenciales y redireccionamiento a la página correcta.
    • Phising banca electrónica
      • Mala validación de datos de entrada, puede permitir inyectar código incluyendo SSL
        • Riesgo : Robo de credenciales y acceso a cuenta corriente
    • Alteración Web mediante url maliciosa
      • Presidencia Europea, se sustituye una imagen de ZP por una de MR_BEAN
        • Daño a la imagen pública de un país.
        • Descripción del XSS en www.securitybydefault.com
    • XSS persistente en Twitter (21/06/10)
      • Inyectaba código javascript a través de un fichero js alojado en un servidor
      • El campo “debil” era Application name
    • XSS en youtube
      • Alteraba los comentarios de los videos
      • Youtube estuvo parado dos horas
    • XSS en facebook
      • http://www.acunetix.com/websitesecurity/xss-facebook.htm
    • http://ha.ckers.org/xss.html
    • http://www.owasp.org
    • http://www.securitybydefault.com
    • Ejecutar un XSS en la siguiente web http://192.168.32.128/secWeb/busqueda.php
    • Intentar modificar el contenido de la misma
    • Preparar un correo para esconder la URL incorrecta
    • Fin del primer día
    • ¿Dudas o preguntas?
  • Enlaces hostiles XSRF - CSRF
  • XSRF o CSRF (Cross- Site Request Forgery)
    • Ataque que fuerza a un usuario a mandar peticiones no solicitadas en una web determinada
    • Utilizan tanto peticiones GET como POST.
  • XSRF – Puesta en Situación
    • Se ha realizado log-in en nuestra banca electrónica
    • Se recibe una URL embebida en un correo, tyniurl,..
      • Parametros :
        • num_account=XXXXXXXX
        • Dest= Pepito
        • amount = 10000
      • Código html
      • http://bank.com/transfer.do?dest=MARIA&amount=100000&num_account=XXXXXXX
  • XSRF – Puesta en Situación
    • Al clickar en el enlace, si la web no está suficientemente validada, se añadira 10000 € en la cuenta de pepito.
    • Ya estan los 10000 € en la cuenta y el coitado no se ha dado cuenta.
    • ¿cómo enmascarar la URL?
      • TinyURL
      • E-mail, embebido en una imagen
  • XSRF – Aspectos
    • 1º El banco tiene que ser vulnerable.
    • 2º hay que estar logueado en el banco
      • ¿Tiene la gente costumbre de cerrar su sesión en el banco?
  • XSRF - Tipología
    • No Persistente
      • El ataque se realiza a través de un enlace externo (Necesidad que el usuario este autenticado)
    • Persistente
      • Propio de la aplicación, el atacante emplea una vulnerabilidad para embedir su código en la Base de Datos de la aplicación
  • XSRF - Persistente
    • ¿qué ocurre si podemos embeber html?
      • Cada vez que alguien acceda a la página hará la petición.
      • Ejemplo: el administrador elimina productos a través de la siguiente página http://servidor/delProd.php?id=15 . Si se puede inyectar código html.
        • <iframe>http://urlmaligna</iframe>
        • Una vez que el administrador acceda a la página se realiza la petición sin su conocimiento
  • XSRF VS XSS
    • XSRF, no es una variante especial de XSS
    • Las protecciones de XSS no sirven para XSRF
    • Utilizar post, no elimina la vulnerabilidad XSRF
  • XSRF - Ejemplos
    • ING Direct, creación de una cuenta bancaria y la posibilidad de hacer transferencias desde la cuenta de usuario al atacante. (OCT- 2008)
    • OpenCart, vulnerable a XSRF mediante POST. http://blog.visionsource.org/2010/01/28/opencart-csrf-vulnerability/
    • GMAIL, formulario de cambio de contraseña vulnerable a XSRF 03/03/09
  • XSRF – Información
    • https://www.isecpartners.com/files/XSRF_Paper_0.pdf
    • http://www.edge-security.com/docs/Edge-Security_Rediris2008.pdfç
    • http://packetstormsecurity.org/papers/attack/Using_XSS_to_bypass_CSRF_protection.pdf
  • ¿Base de datos Comprometida?
  •  
    • Mediante sentencias se obtiene contenido de la base de datos
      • Select, update, insert, delete
    • OR 1 = 1 , siempre verdadero
    • ‘ -- , comentario en SQL
    • Web dinámica
      • Cliente – Servidor
        • Clientes : Navegadores
        • Servidor + Base de datos : Apache + MYSQL
    Cliente Servidor WEB Servidor de Aplicación Servidor de BDD
    • Afecta al servidor
    • Permite la insercción de SQL en la base de datos
    • Vulnerabilidad grave que compromete los activos de la compañía.
    • ¿Causa?
      • La no validación de los datos de entrada.
  • Blind SQL Injection
    • Sentencias básicas para detección
      • ' and ' condition
      • ' and '1'='1
      • ' and '1'='0
    • Se basa en detectar respuestas distintas para condiciones ciertas o falsas
    • A partir de aquí se puede:
      • Extraer bit a bit todo el esquema y contenido de la BDD
      • Hacer INSERT y UPDATE
    • Tarda mucho y es muy “ruidoso”.
    • Necesaria automatización (existen herramientas automáticas, p.ej. SQueaL)
    • MS SQL
      • SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'tablename ')
      • sp_columns tablename (this stored procedure can be used instead)
    • MySQL
      • show columns from tablename
    • Oracle
      • SELECT * FROM all_tab_columns WHERE table_name=' tablename '
    • DB2
      • SELECT * FROM syscat.columns WHERE tabname= ' tablename '
    • Postgres
      • SELECT attnum,attname from pg_class, pg_attribute WHERE relname= ' tablename ' AND pg_class.oid=attrelid AND attnum > 0
    SQL para obtener tablas
  •  
    • Introducción de caracteres como ‘ en cuadros de texto de busqueda.
      • Si está habilitada el debbuger cantará un error.
      • Por ejemplo :
        • Mysql : You have an error on your SQL Sintax, check mysql manual to identify the error.
        • MS : ODBC driver, does not support the requested properties.
    • Una vez identificada la base de datos
      • ¿Qué interesa?
        • Creación de usuario
        • Obtención de información existente
        • Tablas interesantes
          • Tabla de privilegios
          • Tabla de usuarios
    • MYSQL
      • Obtención usuario
        • Select user from mysql.user
      • Información sobre la BD
        • Versión de la BBDD : select @@version
      • Información sobre usuario activo
        • Select system_user();
    • ¿Saltarse autenticación de usuario?
      • Error común select * from usuarios where usuario =‘<parametro_usuario>’ and password=‘<parametro_password>’
      • ¿Qué ocurre si se introduce en los campos lo siguiente?
        • Nombre = ‘ or 1 = 1
        • Password = or 1=1’
        • SQL
          • Select --- from usuarios where usuario = “’” or 1=1 and password =‘’ or 1 = 1
      • Voila, we’re in :P.
    • ¿Cómo programarías la web?
      • Permite identificar posibles errores en el código
      • Permite pensar como el desarrollador
  • SQL Injection - Herramientas
    • Sqlbif: http://www.open-labs.org/
    • SqPyfia: http://www.edge-security.com
    • Sqlmap: http://sqlmap.sourceforge.net/
    • Sqlix : http://www.owasp.org/index.php/Category:OWASP_SQLiX_Project
  • Información
    • http://pentestmonkey.net/blog/mysql-sql-injection-cheat-sheet/
    • Saltarse protección de autenticación
    • Obtener motor de base de datos y versión
    • Crear un nuevo usuario
  • Ajax, bonito pero ¿Seguro?
    • Web 2.0
  • Ajax, Introducción
    • Asynchronous javascript and XML
      • Peticiones asincronas al servidor
        • XMLHTTPRequest
        • Transparentes para el usuario
  • Síncrono Vs Asíncrono
  • Síncrono vs Asíncrono
  • Características de Ajax
    • Presentación DOM y CSS
    • Datos en XML
    • XMLHttpRequest
    • Javascript
    • Plataformas
      • Jquery
      • DWR
      • mootools
  • Fallas de Seguridad en Ajax
    • Habituales
      • XSS
      • SQL Injection
      • Buffer Overflow
    • Novedosas
      • ¿cómo determinar si los datos son enviados por un usuario o por un atacante?
        • Verificar autenticación
        • Concienciación en XSS y XSRF
    http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project
  • Seguridad en Ajax
    • http://insecureweb.com/javascript/secure-your-ajax-request-with-jquery/
    • http://www.foundstone.com/us/resources/whitepapers/wp_insecure_trends_in_web_technologies.pdf
  • Contramedidas
  • Contramedidas
    • 1º Input validation
      • Pensar en ello desde el diseño:
          • (Caso de uso Vs. Casos de abuso)
    • 2º Diseño robusto
      • Existen metodologías (best practices): SSDLC
      • Auditorías Web y de código fuente regulares
          • (Frecuencia dependiendo del riesgo)
    • 3º Securizar “ Harden ” los servidores
    • 4º Medidas de Detección y Disuasión
  • Input Validation
    • Definir tipología de datos para cada campo
      • Implementar políticas de filtros “solo lo correcto”
        • Si usas un número de entrada, en el script deberá ser un número
      • Rechaza cualquier tipo de entrada maligna
      • Implementar filtros para entradas malignas
        • Por ejemplo: reject &quot;select&quot;, &quot;insert&quot;, &quot;update&quot;, &quot;shutdown&quot;, &quot;delete&quot;, &quot;drop&quot;, &quot;--&quot;, &quot;'&quot;
  • Diseño Robusto
    • Define an easy &quot;secure&quot; path to querying data
      • Use stored procedures for interacting with database
      • Call stored procedures through a parameterized API
      • Validate all input through generic routines
      • Use the principle of &quot;least privilege&quot;
        • Define several roles, one for each kind of query
  • Detection and Dissuasion
    • Actuar en intentos de inyecciones SQL :
      • Registrando los intentos
      • Enviando correos de alertas
      • Bloqueando la IP
      • Sending back intimidating error messages:
        • &quot;WARNING: Improper use of this application has been detected. A possible attack was identified. Legal actions will be taken.&quot;
        • Check with your lawyers for proper wording
    • Esto se debe codificar dentro de los scripts de validación
  • Harden the Server
    • Run DB as a low-privilege user account
    • Remove unused stored procedures and functionality or restrict access to administrators
    • Change permissions and remove &quot;public&quot; access to system objects
    • Audit password strength for all user accounts
    • Remove pre-authenticated linked servers
    • Remove unused network protocols
    • Firewall the server so that only trusted clients can connect to it (typically only: administrative network, web server and backup server)
  • Ponentes
    • Javier Allende Astigarraga
    • [email_address]
    • Emet-Jon Velasco
    • [email_address]