Si quieres que tu sitio web no sea hackeado, no lo crees. Te explicamos por qué se puede hackear cualquier cosa y te damos consejos para protegerte.
Si sigues las noticias de IT, seguramente escuchas regularmente sobre fugas de datos de clientes de grandes empresas, vulnerabilidades críticas en aplicaciones populares y ataques a servidores.
La seguridad es un gran problema en el mundo moderno. ¡Qué lástima que todas esas grandes compañías escriban código tan malo! A mí, en cambio, no me da miedo el hackeo. ¿O sí?
¿Por qué unas compañías son hackeadas y otras no? Vamos a ver cómo trabajan los hackers y cómo protegerte de ellos.
El algoritmo del hackeo

Lo principal es recordar que no existen sistemas imposibles de hackear. Acepta esto como una verdad irrefutable. La única pregunta es cuánto tiempo llevará hackearte. Nuestra tarea es hacer que los hackers gasten tanto tiempo en eludir la protección que simplemente no les resulte rentable atacarte.
Un algoritmo de hackeo aproximado es el siguiente:
- Intentar acceder sin necesidad de hackear.
- Usar métodos de hackeo conocidos.
- Usar fuerza bruta.
- Crear una herramienta propia.
- Abordar el problema desde otro ángulo y empezar de nuevo.
Vamos a recorrer juntos el camino del hacker y a ver cómo lo hace.
No estamos pirateando nada ni te lo recomendamos. Toda la información de este artículo se proporciona para que aprendas a proteger tus sitios web y aplicaciones.
El objetivo del hackeo
Imaginemos que un hacker planea acceder a la cuenta de un usuario específico en un sitio web concreto.
Paso uno: Ingeniería social
El mejor hackeo es el que no sucede. Para obtener acceso sin hackear, necesitas que el usuario te proporcione todos los datos. Para eso se utiliza la ingeniería social. Estos son algunos de los métodos más conocidos:
Correos electrónicos de la administración
Hay que escribirle un correo electrónico a la persona haciéndose pasar por un empleado de la empresa propietaria del sitio web. Para ello, se pueden modificar los encabezados del correo electrónico para que el usuario piense que realmente proviene de los representantes oficiales.
El contenido podría ser el siguiente:
“¡Hola, %nombredeusuario%! Hemos recibido información de que tu cuenta ha sufrido un intento de hackeo. Hemos logrado eliminar la amenaza a tiempo, pero necesitamos acceder a tu cuenta personal para llevar a cabo una investigación más a fondo.
Para ello, debes proporcionar tu nombre de usuario y contraseña.
Esperamos tu comprensión y cooperación.
Atentamente,
[nombres verificados],
Jefe del departamento de seguridad de Nombre-SitioWeb.com”
Cuando recibes un correo electrónico como este, lo primero que piensas es que ha ocurrido algo terrible. Y solo cuando las emociones se calman, el sentido común puede advertirte de que probablemente se trate de estafadores.
Encanto
De repente, te escribe una persona que quiere saberlo todo sobre ti: de dónde eres, qué te gusta, si te gustan los animales, el apellido de soltera de tu madre, etc. Normalmente, esta persona se hace pasar por la chica o el chico ideal: ¿cómo no confiar en alguien tan encantador?
Tú, por supuesto, mantienes la conversación, y luego la comunicación se interrumbe. Y después de un tiempo, te das cuenta de que no puedes acceder al sitio web. Sucede lo siguiente: el atacante ha descubierto la respuesta a la pregunta secreta necesaria para recuperar el acceso a la cuenta.
Phishing
Recibes un mensaje de un amigo o conocido en el que te pide que visites un sitio web para votar en un concurso. Después de hacer clic en el enlace, por alguna razón, tienes que volver a iniciar sesión, pero si lo haces, no ocurre nada. Cierras la pestaña, pero ya es demasiado tarde.
En realidad, se trata de un sitio web falso: puede tener el mismo diseño e incluso la misma dirección que el sitio web real, pero solo es una imitación que se utiliza para que tú mismo introduzcas tus datos.
Lee también: Qué Hacer Si Haces Clic en un Enlace de Phishing
Métodos de protección
Para proteger a los usuarios de los ataques mediante ingeniería social, debes informarles constantemente sobre lo siguiente:
- La administración nunca solicita datos de inicio de sesión en el sitio web.
- No debes comunicar contraseñas de un solo uso ni respuestas a preguntas secretas a nadie.
- No debes acceder desde tu sitio web a otros y autenticarte en ellos. Especialmente si has visto el enlace en los comentarios o lo has recibido por mensaje privado.
- Si alguien accede a la cuenta del usuario desde otro dispositivo, envía un correo electrónico con instrucciones sobre qué hacer si no ha sido el propio usuario quien ha iniciado sesión.
Paso dos: Hackeo utilizando vulnerabilidades conocidas
Si no has podido obtener la contraseña del usuario, debes seguir adelante e intentar explotar las vulnerabilidades a las que están expuestos prácticamente todos los sitios web. La más conocida de ellas es la inyección SQL.
SQL está diseñado de tal manera que puedes enviar varias consultas a la vez, separadas por punto y coma.
Por ejemplo, en tu sitio web hay un formulario de inicio de sesión en el que debes introducir tu nombre de usuario y contraseña. La consulta que se envía para verificar a los usuarios suele tener este aspecto:
"SELECT * FROM users WHERE login = ' " . $login . "' AND password = ' " . $password . " ';"
Sabiendo esto, un hacker puede introducir una instrucción de inyección en el campo de contraseña. Por ejemplo, esta:
qwerty'; UPDATE users SET password = '12345' WHERE login = 'user_login
Entonces, la consulta completa tendrá este aspecto:
"SELECT * FROM users WHERE login = ' " . $login . "' AND password = 'qwerty'; UPDATE users SET password = '12345' WHERE login = 'user_login ';"
Aquí ya hay dos consultas: la primera intenta encontrar al usuario con los datos especificados, y la segunda cambia la contraseña del usuario con el nombre de usuario user_login
a 12345
. Si la inyección funciona, el hacker podrá iniciar sesión simplemente utilizando la nueva contraseña.

Métodos de protección
Hay muchos métodos. Por ejemplo, puedes prohibir la introducción de comillas, puntos y coma o palabras clave de SQL. Pero el método más fiable es transmitir los datos por separado de la consulta.
Entonces, el SGBD percibirá la inyección no como parte de la consulta, sino solo como la contraseña introducida. Puedes obtener más información sobre la protección contra inyecciones SQL aquí.
Paso tres: Fuerza bruta
Si hasta ahora nada ha funcionado, el hacker puede intentar el método de fuerza bruta: probar diferentes contraseñas. Ejecutará un script especial que intentará iniciar sesión en tu cuenta con contraseñas aleatorias.
Normalmente, al principio se utilizan las opciones más comunes:
qwerty
;12345
;0000
;password
;dartvader
y otras.
Métodos de protección
La mejor protección en este caso es limitar el número de intentos de inicio de sesión.
Paso cuatro: Desarrollo de métodos de hackeo propios
Si nada de esto ha funcionado, el hacker puede intentar estudiar el código fuente de las páginas para determinar qué vulnerabilidades tiene tu sitio web.
Un grupo de riesgo aparte son aquellos que utilizan CMS (sistemas de gestión de contenido): el atacante puede averiguar con qué funciona tu sitio web, instalar el mismo sistema en su propio ordenador y buscar vulnerabilidades desde dentro.
Herramienta de testing: CMSeeK: Suite de Detección y Explotación CMS
Métodos de protección
Siempre debes utilizar las últimas versiones de los sistemas de gestión de contenido, en las que ya se han eliminado las vulnerabilidades antiguas y aún nadie ha descubierto las nuevas.
Paso cinco: Cambio de enfoque
Si el hackeo puntual no ha funcionado, el hacker puede tomar otro camino. Por ejemplo, puede intentar obtener acceso al hosting donde se encuentra el sitio web. Para ello, utilizará los mismos pasos que antes o intentará hacerlo de otra manera.
Si en el sitio web hay una opción para cargar una foto de perfil, el atacante puede intentar enviar a través de ella un script al servidor. Por ejemplo, un administrador de archivos: de esta manera podrá ver todos los archivos que hay en el sitio web. Incluidos aquellos en los que se almacenan los datos para conectarse a la base de datos.
Métodos de protección
Vale la pena agregar algunas comprobaciones al sitio web para todos los formularios de carga de archivos. Por ejemplo, para las imágenes, se puede agregar lo siguiente:
$imageFileType = strtolower(pathinfo(basename($file["name"]), PATHINFO_EXTENSION));
$check = getimagesize($file["tmp_name"]); //Intentamos obtener las dimensiones de la imagen: si el usuario intenta cargar un script con la extensión de imagen, se devolverá false
if($check !== false)
{
if($imageFileType == "jpg" || $imageFileType == "png"
|| $imageFileType == "jpeg" || $imageFileType == "gif") //Comprobación de la extensión
{
//El archivo se puede cargar
}
}
De esta manera, el atacante no podrá cargar nada más que imágenes reales. Pero ni siquiera aquí la protección es absoluta, ya que un script malicioso puede estar contenido dentro de la imagen.
O intentará conectarse al FTP y reemplazar los scripts del servidor. Y si conoce el nombre de usuario y la contraseña para iniciar sesión en phpmyadmin, obtendrá acceso a toda la base de datos.
Puedes protegerte contra fugas mediante el cifrado. Por ejemplo, es mejor hash las contraseñas usando SHA-2, y codificar los datos personales importantes con el cifrado de Vigenère o algo más serio. Lo importante es que no te roben las claves de descifrado.
Conclusión
La ciberseguridad es una guerra invisible en la que los hackers y los especialistas en seguridad inventan nuevas formas de reforzar las barricadas y de sortearlas.
Pero si no trabajas en una empresa de nivel mundial, es poco probable que alguien quiera dedicar su tiempo a hackear tu sitio web. Especialmente si lo proteges de los métodos de hackeo más comunes.