HSTS define el mecanismo, o procedimiento que deben seguir tanto el servidor, como el navegador web (o más genéricamente un "User Agent") para que interactúen de forma más segura, usando exclusivamente comunicaciones seguras, como HTTPS gracias al uso de protocolos de transporte seguros como son TLS/SSL. Esta especificación sería una alternativa al uso de otros protocolos de transmisión de información como SPDY, el cual por definición utiliza comunicaciones siempre cifradas.
El soporte de esta especificación por parte de los servidores y navegadores web conlleva una considerable mejora en la seguridad y privacidad de las comunicaciones de los usuarios. En este artículo describiremos brevemente tanto el objetivo de la especificación como su funcionamiento.
Como define su especificación, el objetivo de HSTS es la mejora de la seguridad en las comunicaciones web centrándose en tres tipos de amenazas o ataques:
- Ataques de red pasivos, aquellos en los que un atacante está escuchando todo el tráfico, como por ejemplo en una red WiFi, con el objetivo de obtener información de comunicaciones no cifradas, llegando en algunos casos a poder robar información sensible como la sesión de los usuarios.
- Ataques de red activos, en los que los atacantes actúan sobre la propia red inyectando datos, suplantando elementos de la red, redirigiendo los comunicaciones, …
- Errores cometidos por los desarrolladores del sitio web, como el uso de conexiones no seguras para descargar elementos como recursos de la web (CSS, JavaScript,…) o el envío de datos.
- Google Chrome: admitido desde la versión 4.0.211.0.21.
- Firefox: admitido desde Firefox 4 y en la 17 proporciona ya una lista de sitios web que soportan HSTS.
- Opera: admitido desde la versión 12.
En el caso de Apache, se puede agregar al archivo .htaccess la siguiente línea
Header always set Strict-Transport-Security "max-age=10886400; includeSubDomains"
<system.webServer><httpProtocol><customHeaders><add name="Strict-Transport-Security" value="max-age=10886400"/></customHeaders></httpProtocol></system.webServer>
add_header Strict-Transport-Security "max-age=10886400; includeSubDomains";
$use_sts = true;
// iis sets HTTPS to 'off' for non-SSL requests
if ($use_sts && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
header('Strict-Transport-Security: max-age=10886400; includeSubDomains; preload');
} elseif ($use_sts) {
header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301);
// we are in cleartext at the moment, prevent further execution and output
die();
}
0 comentarios:
Publicar un comentario