¿Puedo confiar en el encabezado del Host recibido en la solicitud?

3

La pregunta es muy simple: ¿puedo confiar en el valor del encabezado del Host?

Estamos desarrollando una aplicación que sirve algunos recursos a través de HTTP y no vamos a tener algunos servicios privados y otros públicos.

Tenemos dominios internos como "backoffice.xxxx.com" a los que solo se puede acceder internamente, y tenemos otros dominios a los que se puede acceder desde cualquier lugar.

Para ser más específico, este caso se trata de una aplicación que sirve imágenes. Por lo tanto, podemos tener una ruta como "/ pictures / xxxx" a través de GET y se muestra la imagen con esa ID para todos los que quieran verla. Pero también hemos mapeado la ruta "/ pictures" a través de POST para cargar nuevas imágenes y no queremos que nadie suba imágenes.

Lo que creemos es que podemos usar el encabezado del Host para validar la solicitud y rechazar a aquellos que provienen de dominios públicos (o simplemente permitir dominios internos y denegar cualquier otro).

¿Qué otras opciones tenemos para validar estas solicitudes? (Si el encabezado del Host no es lo suficientemente seguro).

    
pregunta Pablo Matias Gomez 27.01.2016 - 14:48
fuente

2 respuestas

5

No.

Es trivial cambiar el valor del encabezado del host, pero, dependiendo de la configuración del servidor, esto puede hacer que el sitio no funcione correctamente. En particular, si está utilizando hosts virtuales basados en nombres, el servidor web mirará el encabezado del host para determinar qué sitio (de muchos) cargar, y (por lo general) predeterminará al primero definido si no reconoce el host encabezado.

Si tiene una red interna, probablemente tendrá un rango de direcciones IP internas. Es posible restringir el acceso a funciones basadas en eso, aunque la configuración específica depende del servidor web en uso. También puede considerar tener una autorización centralizada de LDAP o similar, por lo que solo las solicitudes de usuarios internos que hayan iniciado sesión de alguna manera pueden proporcionar un encabezado de autorización. Esto es ideal si está ejecutando un dominio de Windows: incluso puede tener un inicio de sesión automático para las funciones de administración en este caso, según el usuario que haya iniciado sesión en la computadora.

    
respondido por el Matthew 27.01.2016 - 14:57
fuente
4

El encabezado del host será el nombre de host de su servidor web y solo lo utilizan los clientes en las solicitudes HTTP. No se puede utilizar para validar si la fuente está autorizada para cargar imágenes o no. Desarrollaría un mecanismo de inicio de sesión en el que los usuarios pueden autenticarse (posiblemente con un servicio de directorio, como lo menciona Matthew) y, si está autorizado, subir nuevas fotos. Denegar todos los demás accesos a la página web asignada a / imágenes. En combinación con SSL / TLS y la administración de contraseñas sólidas, esta es la solución más controlable y segura.

    
respondido por el Stef Heylen 27.01.2016 - 15:32
fuente

Lea otras preguntas en las etiquetas