SEGURIDAD
SEGURIDAD EN LA WEB.
¿Qué es la seguridad de sitios web?
¡Internet es un sitio peligroso! Con mucha frecuencia escuchamos sobre sitios web que dejan de estar disponibles debido a ataques de denegación de servicio, o presentan información modificada (y con frecuencia dañada) en sus páginas de inicio. En otros casos de alto nivel, millones de contraseñas, direcciones de correo electrónico y detalles de tarjetas de crédito han sido filtrados al dominio público, exponiendo a los usuarios del sitio web tanto a bochorno personal como a riesgo finaciero.
El propósito de la seguridad web es prevenir ataques de esta (o de cualquier otra) clase. Mas formalmente, la seguridad es la acción/práctica de proteger sitios web del acceso, uso, modificación, destrucción o interrupción, no autorizados.
La seguridad de sitios web eficaz requiere de esfuerzos de diseño a lo largo de la totalidad del sitio web: en tu aplicación web, en la configuración del servidor web, en tus políticas para crear y renovar contraseñas, y en el código del lado cliente. Al mismo tiempo que todo esto suena muy inquietante, la buena noticia es que si estás usando un framework web de lado servidor, es casi seguro que habilitará por defecto mecanismos de defensa robustos y bien pensados contra gran cantidad de los ataques más comunes. Otros ataques pueden mitigarse por medio de la configuración de tu servidor web, por ejemplo habilitando HTTPS. Finalmente, hay herramientas de escaneado de vulnerabilidades disponibles públicamente que pueden ayudarte a averiguar si has cometido algún error obvio.
Amenazas de seguridad
Con la aparición de la Web 2.0, el intercambio de información a través de redes sociales y el crecimiento de los negocios en la adopción de la Web como un medio para hacer negocios y ofrecer servicios, los sitios web son constantemente atacados. Los hackers buscan, ya sea comprometer la red de la corporación o a los usuarios finales, accediendo al sitio web y obligándolos a realizar drive-by downloading.12
Como resultado, la industria3 está prestando mayor atención a la seguridad de aplicaciones web,4 así como a la seguridad de las redes de computadoras y sistemas operativos.
La mayoría de los ataques a aplicaciones web ocurren a través del cross-site scripting (XSS) e inyección SQL5 el cual comúnmente resulta de una codificación deficiente y la falta de desinfección de las entradas y salidas de la aplicación web. Estos se encuentran en el ranking del 2009 CWE/SANS Top 25 Most Dangerous Programming Errors.6
El Phishing es otra amenaza común de las aplicaciones Web. "RSA, la División de Seguridad del EMC, anuncio hoy lo hallado en su reporte sobre fraude de enero de 2013, estimando las pérdidas globales debido al phishing en $1.5 billones en 2012".7 Dos de los métodos de phishing más conocidos son Covert Redirect y Open Redirect.
Estándares de seguridad.
OWASP es el estándar emergente para la seguridad de aplicaciones Web. Han publicado el OWASP Top 10 que describe a detalle las principales amenazas de las aplicaciones web. El Consorcio de Seguridad de Aplicaciones Web (WASC) ha creado la Base de Datos de Incidentes de Hackeo9 así como mejores documentos de código abierto sobre seguridad de aplicaciones Web.
Tecnología de seguridad.
Mientras que la seguridad se basa fundamentalmente en las personas y los procesos, existen varias soluciones técnicas a considerar cuando se diseña, construye y prueban aplicaciones web seguras. A un alto nivel, estas soluciones incluyen:
- Black box: herramientas de prueba tales como escáneres de seguridad de aplicaciones Web,10 escáneres de vulnerabilidad y software de prueba de penetración.
- White box: herramientas de prueba tales como analizadores estáticos de código fuente11
- Fuzzing:12 herramientas utilizadas para pruebas de entrada.
- Escáner de seguridad de aplicaciones web (escáner de vulnerabilidad).
- Firewalls de aplicación web (WAF):13 utilizada para brindar protección tipo firewall en la capa de la aplicación web.
- Cracking de contraseña: herramientas de prueba de fuerza de contraseña e implementación.
Unos cuantos mensajes clave
Casi todos los exploits de las secciones anteriores tienen éxito cuando la aplicación web confía en los datos que vienen del explorador. Sea lo que sea que hagas para mejorar la seguridad de tu sitio web, deberías desinfectar todos los datos originados por el usuario antes de ser mostrados en el explorador, usados en queries SQL o pasados en una llamada al sistema operativo o fichero de sistema.
MEDIDAS PREVENTIVAS.
Otras cuantas medidas concretas que puedes tomar son:
- Usar una gestión de contraseñas más efectiva. Fomentar las contraseñas fuertes y que se cambien con regularidad. Considerar para tu sitio web la autenticación de dos factores, de manera que, además de la contraseña, el usuario tenga que introducir algún otro código de autenticación (normalmente alguno que se distribuye mediante algún hardware que sólo tiene el usuario, como un código en un mensaje de texto enviado a su teléfono móvil).
- Configurar tu servidor web para usar HTTPS y HTTP Strict Transport Security (HSTS). HTTPS encripta los datos enviados entre el cliente y el servidor. Esto asegura que las credenciales de incio de sesión, cookies, datos
POST
e información de cabecera permanecen menos disponibles a los atacantes. - Seguir la pista a las amenazas más populares (aquí puedes acceder a la lista actual OWASP) y atacar las vulnerabilidades más comunes primero.
- Usar herramientas de escanéo de vulnerabilidades para realizar pruebas automáticas de seguridad en tu sitio (más adelante, si tu sitio web llega a ser super exitoso puedes también encontrar bugs por medio de ofrecer recompensas por encontrar bugs como hace Mozilla aquí).
- Almacena y muestra sólo los datos que necesiten serlo. Por ejemplo, si tus usuarios deben almacenar información sensible como los detalles de las tarjetas de crédito, sólo muestra lo suficiente del número de tarjeta de manera que pueda ser identificada por el usuario, y no suficiente para que pueda ser copiado por el atacante y usado en otro sitio. El patrón más común hoy en día es mostrar sólo los 4 últimos dígitos del número de la tarjeta de crédito.
Comentarios
Publicar un comentario