HTTP: Cookies
Es un fragmento de información que envía un servidor web en una respuesta HTTP y es almacenada, si su configuración lo permite, por el navegador para su uso futuro. Los servidores envían las cookies usando cabeceras y pueden contener diversos tipos de datos, como nombre, valor, fecha de expiración, ruta y dominio. Cuando un navegador realiza una solicitud a un servidor HTTP consulta las cookies que tiene almacenadas. Si existen cookies no caducadas y coinciden con la petición, se las envía al servidor utilizando cabeceras. Las cookies son muy utilizadas para diferenciar usuarios y conexiones, y actuar en consecuencia. Las cookies pueden ser aceptadas, bloqueadas o borradas según se configure el navegador.
Autenticación
HTTP soporta el uso de mecanismos de autenticación para controlar el acceso a los recursos que ofrece el servidor. Estos mecanismos están basados en el uso del código de estado 401 y en las cabeceras.
Mecanismo Basic
El cliente envía un usuario y una clave codificados con el algoritmo base64. Método no seguro.
Mecanismo Digest
El cliente envía un usuario y una función hash de clave al servidor. Es más seguro que el método basic.
Conexiones Persistentes
Consiste en que varias peticiones y respuestas sean transferidas usando la misma conexión TCP. Su uso reduce el número de conexiones TCP, lo que repercute en un menor gasto de CPU/memoria y una reducción de tiempo de respuesta.
- En HTTP/1.0 el comportamiento por defecto es crear una conexión TCP por cada interacción de petición respuesta.
- En HTTP/1.1 se introducen conexiones persistentes por defecto.
MIME
Consiste en una serie de especificaciones orientadas a intercambiar en Internet, usando protocolos como HTTP y SMTP, todo tipo de recursos de forma transparente. Define:
- Una serie de tipos y subtipos que determinan el contenido de los recursos enviados a través de la red.
- Un conjunto de reglas para codificar mensajes no ASCII
- Un conjunto de cabeceras que son utilizadas por los protocolos para informar a los clientes y servidores sobre los recursos transmitidos.
En HTTP se utilizan las cabeceras y tipos MIME en:
- Los mensajes de respuesta que envía el servidor para informar al cliente de los recursos que envía. El navegador en función del tipo MIME recibido visualiza o reproduce el recurso, lo abre con una aplicación externa y le pregunta al usuario.
- Los mensajes de petición que envían los clientes para informar al servidor de los tipos MIME que acepta.
- Para encapsular uno o más recursos en el cuerpo de mensaje usando un tipo MIME especial denominado “multipart”
Seguridad
HTTP no es un protocolo seguro.
- El intercambio de información se realiza en texto plano.
- Es vulnerable a ataques de análisis de datos de red.
- Los mecanismos de autenticación como Basic y Digest no son seguros.
- No se usan mecanismos para garantizar que los equipos involucrados en la transferencia son quienes deben de ser. Es vulnerable a ataques de suplantación de identidad.
- Existen ataques que se basan en el robo o falsificación de cookies y/o parámetros enviados en la URL o en el contenido de los mensajes y que permiten al atacante “robar la identidad” de un usuario.
- Clientes y Servidores web tienen vulnerabilidades que pueden ser aprovechadas por potenciales atacantes para comprometer los datos y los sistemas donde se ejecutan.
- Las aplicaciones web también tienen vulnerabilidades usadas para comprometer la propia aplicación, los datos de sus usuarios y los sistemas y redes que intervienen.
Protocolo HTTPS
Es un protocolo que utiliza SSL o TLS para encapsular mensajes HTTP. Gracias a la utilización de algoritmos criptográficos y certificados digitales se puede garantizar la confidencialidad y la integridad de la información transmitida. Los clientes utilizan https:// en las URIs. Los servidores web por defecto escuchan peticiones HTTPS en el puerto 443/TCP
Alojamiento virtual de sitios web
El alojamiento virtual de sitios web consiste en simular que existen varias máquinas (hosts) con sus respectivos sitios web sobre un solo servidor web, es decir, alojar varios sitios en un mismo servidor. Esto permite reducir el número de máquinas físicas necesarias y aprovechar mejor los recursos
Alojamiento virtual basado en IPs
El servidor tendrá diferentes direcciones IP por cada servidor web virtual. Cada servidor virtual atenderá peticiones en una dirección IP diferente. Para realizar esta configuración la máquina, donde se ejecuta el servidor web, debe tener varias tarjetas de red configuradas cada una con una dirección IP.
Alojamiento virtual basado en nombres
El servidor permite alojar varios nombres de dominio sobre la misma dirección IP. Cada servidor virtual atiende las peticiones de un nombre de dominio. Hay que configurar un servidor DNS que asocie los nombres de dominio con la misma dirección IP. Es la forma de alojamiento más utilizada. Se ahorra tanto en número de equipos como en direcciones IP. Además simplifica y facilita la administración centralizada de los servidores.
Alojamiento virtual basado en puertos
Cada servidor virtual atiende peticiones en una dirección IP y/o dominio:puerto diferentes. Consiste en combinar el alojamiento basado en IP y/o nombres con el uso de varios puertos a la escucha.
Combinaciones
En un mismo servidor web se pueden combinar servidores virtuales basados en IP, en nombres y puertos.