Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Seguridad web básica

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

40 minutos

La puerta del bar

Al cerrar el bar echas la llave. No porque pienses que todos son ladrones.

Lo haces porque una puerta abierta es una invitación. Con una web pasa igual.

En esta lección verás tres defensas básicas. Con ellas tu web cierra la puerta a los fallos más comunes.

Palabras clave

PalabraQué significaEjemplo
HashUna huella de una contraseña. No se puede deshacer para recuperar la contraseña.Una cadena larga de letras
SalUn texto al azar que se añade a la contraseña antes de hacer el hash.Distinta para cada usuario
Inyección SQLUn fallo en el que el texto de un usuario cambia lo que hace una consulta.Consulta con texto pegado
Consulta preparadaUna consulta con huecos. Los valores van aparte y nunca se mezclan con la orden.WHERE email = ?
XSSUn fallo en el que una web enseña texto de un usuario como si fuera código de la página.Un comentario con etiquetas
EscaparCambiar los signos especiales por texto inofensivo antes de enseñarlos.< pasa a &lt;
ValidarComprobar en el servidor que un dato tiene la forma que esperas.Una edad es un número

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cómo guardar contraseñas

FormaQué se guardaSi roban la base de datos
Texto claroLa contraseña tal cualSe leen todas. Es el peor caso
Cifrada con una llaveLa contraseña mezcladaSi roban también la llave, se leen todas
Hash con salUna huella distinta por usuarioNo se pueden leer y cuesta mucho adivinarlas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Repaso rápido: contraseñas

Inténtalo

Repaso rápido: contraseñas

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

Consultas con huecos

Una web guarda datos en una base de datos y los pide con consultas SQL.

El error es pegar el texto del usuario dentro de la consulta. Entonces el usuario puede cambiar lo que la consulta hace. Eso es una inyección SQL.

La defensa es dejar un hueco ? y pasar el valor aparte.

La consulta mal y bien, en Java

Código: java
// MAL: el texto del usuario se pega dentro de la consulta
String bad = "SELECT * FROM users WHERE email = '" + email + "'";

// BIEN: la consulta lleva un hueco y el valor va aparte
String sql = "SELECT * FROM users WHERE email = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, email);
ResultSet rows = statement.executeQuery();

Lo mismo en PHP

Código: php
<?php
// La consulta lleva un hueco y el valor va aparte
$statement = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$statement->execute([$email]);
$rows = $statement->fetchAll();

Repaso rápido: consultas

Inténtalo

Repaso rápido: consultas

3 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

10 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.