Qué ve un visitante curioso de tu sitio
Publicar un sitio es ponerlo en un servidor donde cualquiera pueda visitarlo. Los ajustes del servidor deciden qué enseña de más y qué protege.
Una sola regla: trabaja solo en tu copia del laboratorio y solo con permiso. Aprendes esto para defender tus sitios, no para mirar los de otros.
Al final de esta lección
Nota
Puedo reconocer los ajustes inseguros de un sitio antes de publicarlo.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Publicar | poner un sitio en un servidor para que lo visite cualquiera | |
| Configuración | el archivo de ajustes de un servidor | |
| Cabecera | una línea con datos sobre la respuesta | Server: nginx |
| Listado de carpeta | una página que enseña todos los archivos de una carpeta | |
| Archivo olvidado | una copia o un resto que nadie quería publicar | config.php.bak |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un servidor puede contar más de lo necesario
Un servidor mal ajustado regala pistas. Puede decir qué programa y qué versión usa. Una versión vieja tiene fallos conocidos y un atacante lo sabe.
También puede enseñar una carpeta entera. Y puede dejar a la vista archivos que nadie quería publicar.
Mira qué programa dice usar el sitio
curl -sI http://web/ | grep -i '^server'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Lee un archivo de la carpeta de precios
curl -s http://web/files/prices.csvSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que un archivo está protegido si nadie conoce su nombre. No es así. Basta con probar nombres comunes, como una copia con .bak al final. Un archivo secreto no debe estar en la carpeta que se publica.
Algunas cabeceras protegen al visitante
El servidor puede añadir cabeceras que dan órdenes al navegador. Cada una cierra una puerta concreta.
Por ejemplo, una dice al navegador que no adivine el tipo de un archivo. Otra impide que otra web meta tu página dentro de un marco.
Ejemplo resuelto: cuatro cabeceras y su protección
| Cabecera | Qué ordena al navegador | De qué protege |
|---|---|---|
| X-Content-Type-Options | No adivines el tipo de archivo | Un archivo disfrazado que se ejecuta |
| X-Frame-Options | No dejes que otra web me meta en un marco | Que engañen con un botón escondido |
| Content-Security-Policy | Solo carga lo que yo permito | Código de otros sitios en tu página |
| Referrer-Policy | No cuentes de dónde vienes | Que se filtre la dirección anterior |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Cada ajuste es una línea de la configuración
La configuración de nginx es un texto. Cada ajuste es una línea que acaba en punto y coma.
Para revisar un sitio antes de publicarlo, lees esas líneas con una lista de reglas. Un programa puede hacer la misma revisión por ti.
Una configuración con dos ajustes flojos
# Ejemplo de configuración, escrita a mano para esta lección
server {
listen 80;
server_tokens on;
autoindex on;
add_header X-Frame-Options DENY;
}Las reglas que usarás en la tarea
| Ajuste | Valor inseguro | Aviso que debe dar tu programa |
|---|---|---|
| server_tokens | on, o ausente | server_tokens |
| autoindex | on | autoindex |
| add_header X-Content-Type-Options | ausente | falta X-Content-Type-Options |
| add_header X-Frame-Options | ausente | falta X-Frame-Options |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Para ir más lejos: una quinta regla
Añade una regla para la cabecera Referrer-Policy. Escribe el aviso que devolverías cuando falte.
Después explica en una frase de qué protege esa cabecera a quien visita tu sitio.