HTTP Strict Transport Security

HTTP Strict Transport Security

HTTP Strict Transport Security (HSTS) est un mécanisme de politique de sécurité proposé pour HTTP, permettant à un serveur web de déclarer à un agent utilisateur (comme un navigateur web), compatible, qu'il doit interagir avec lui en utilisant une connexion sécurisée (comme HTTPS). La politique est donc communiquée à l'agent utilisateur par le serveur via la réponse HTTP, dans le champ d'entête nommé « Strict-Transport-Security ». La politique spécifie une période de temps durant laquelle l'agent utilisateur doit accéder au serveur uniquement de façon sécurisée.

Sommaire

Généralités

Lorsque la politique HSTS est active pour un site web, l'agent utilisateur compatible opère comme suit :

  1. Remplace automatiquement tous les liens non-sécurisés par des liens sécurisés. Par exemple, http://www.exemple.com/une/page/ est automatiquement remplacé par https://www.exemple.com/une/page/ avant d'accéder au serveur.
  2. Si la sécurité de la connexion ne peut être assurée (par exemple, le certificat TLS est auto-signé), celui-ci affiche un message d'erreur et interdit à l'utilisateur l'accès au site à cause de cette erreur.

La politique HSTS aide à protéger les utilisateurs de sites web contre quelques attaques réseau passives (Écoute clandestine) et actives. Une attaque du type man-in-the-middle ne peut pas intercepter de requête tant que le HSTS est actif pour ce site.

Support

Navigateurs supportant HSTS

  • Google Chrome et Chromium[1] supporte HSTS depuis la version 4.0.211.0.
  • Le support de HSTS est activé dans les sources de Firefox depuis le 25 aout 2010, il est disponible depuis Firefox 4.0.
  • L'extension pour Firefox « NoScript » impose HSTS depuis la version 1.9.8.9
  • L'extension pour Firefox « HTTPS Everywhere », dérivé de NoScript, généralise le concept de HSTS en incluant des sous-ensembles de chemins pour certains domaines, et réécrit les URI non-sécurisées http:// d'un domaine en URI https:// d'un domaine relatif (Par exemple, de http://en.wikipedia.org à https://secure.wikimedia.org)[2].

Implémentation

Les entêtes Strict-Transport-Security doivent être envoyés via des réponses HTTPS. L'implémentation du côté client ne doit pas respecter les entêtes STS qui ne sont pas envoyés via des réponses HTTPS, ou au travers de réponses HTTPS qui ne sont pas configurées proprement, et sans certificat de confiance. Les bribes de configuration de serveur suivantes doivent être effectuées dans un contexte de bloc de configuration d'un site SSL, et les exemples de codes ne doivent être effectués que dans un contexte de réponses HTTPS.

Il faut noter que le temps maximum (max-age) est donné en secondes. Les 500 secondes dans les exemples ci-dessous peuvent être remplacées par des valeurs plus larges en fonction des besoins du gestionnaire du serveur web.

Implémentation Apache

Header set Strict-Transport-Security "max-age=500"
Header append Strict-Transport-Security includeSubDomains

Implémentation Nginx

add_header Strict-Transport-Security max-age=500;

Implémentation IIS

Le module STSModule[3]. peut-être installé afin d'ajouter l'entête STS.

<system.web>
  <httpModules>
    <add name="STSModule" type="STSModule.STSServerModule"/>
  </httpModules>
</system.web>
<configuration>
  <configSections>
    <sectionGroup name="stsModuleSection">
      <section name="stsModule" type="STSModule.StrictTransportSecuritySection"/>
    </sectionGroup>
  </configSections>
</configuration>

Implémentation PHP

$use_sts = true;
 
// iis sets HTTPS to 'off' for non-SSL requests
if ($use_sts) {
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
        header('Strict-Transport-Security: max-age=500');
    } else {
        header('Status-Code: 301');
        header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    }
}

Implémentation Perl

use CGI;
 
$q = new CGI;
$use_sts = true;
 
if ($use_sts == true) {
    print $q->header('Strict-Transport-Security' => 'max-age=500'); 
} elseif ($use_sts == true) {
    header('Status-Code: 301');
    $url = 'https://'.$ENV{'SERVER_NAME'}.$ENV{'PATH_INFO'}.$ENV{'QUERY_STRING'}
    print $q->redirect(status => '301 Moved Permanently', location => $url);
}

Implémentation Ruby on Rails

use_sts = true;
 
if use_sts == true
    @response.headers['Strict-Transport-Security'], 'max-age=500'
if use_sts == true
    head :moved_permanently, :location => "https://" + request.env["SERVER_ADDR"] + request.env["REQUEST_URI"]

Implémentation ASP

Dim use_sts
use_sts = True
 
If use_sts = True And Request.Url.Scheme = "https" Then
    Response.AddHeader "Strict-Transport-Security","max-age=500"
ElseIf use_sts = True And Request.Url.Scheme = "http" Then
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location", "https://" + Request.Url.Host + Request.Url.PathAndQuery
End If

Implémentation ColdFusion Markup Language (CFML)

<cfset use_sts = true>
 
<cfif use_sts is "True"> 
  <cfheader name="Strict-Transport-Security" value="max-age=500">
<cfelseif use_sts is "True"> 
  <cfheader statuscode="301" statustext="Moved permanently">
  <cfheader name="Location" value="https://" + CGI.SERVER_NAME + CGI.SCRIPT_NAME + CGI.QUERY_STRING>
</cfif>

Implémentation JavaServer Pages (JSP)

use_sts = true;
 
if(use_sts == true) {
  if(request.getScheme().equals("https")) {
    // Envoi de l'entete HSTS
    response.setHeader("Strict-Transport-Security", "max-age=500");
  } else {
    response.setStatus(301);
    url = "https://" + request.getServerName() + request.getPathInfo() + request.getQueryString();
    response.setHeader("Location", url);
  }
}

Implémentation Visual Basic .NET

Dim use_sts As Boolean = True
 
If use_sts = True Then
    Response.AppendHeader("Strict-Transport-Security", "max-age=500")
ElseIf use_sts = True Then
    Response.AppendHeader("Status-Code", "301")
    Response.AppendHeader("Location", "https://")
End If

Références


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article HTTP Strict Transport Security de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • List of HTTP header fields — HTTP Persistence · Compression · HTTPS Request methods OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT Header fields Cookie · ETag · Location · Referer DNT · …   Wikipedia

  • Security guard — Private factory guard Occupation Activity sectors Security Description A security guard (or security officer) is a person who is paid to protect pro …   Wikipedia

  • HTTP cookie — HTTP Persistence · Compression · HTTPS Request methods OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT Header fields Cookie · ETag · Location · Referer DNT · …   Wikipedia

  • Aviation Security Identification Card — An Aviation Security Identification Card (ASIC) is an Australian identification card that shows that the holder of the card has undergone a security check and is suitable to enter a secure area of an Australian Airport. Security checks are… …   Wikipedia

  • HSTS — (сокр. от англ. HTTP Strict Transport Security)  механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования… …   Википедия

  • Hypertext Transfer Protocol Secure — HTTPS (Hypertext Transfer Protocol Secure) Familie: Internetprotokollfamilie Einsatzgebiet: Verschlüsselte Datenübertragung Port: 443/TCP HTTPS im TCP/IP‑Protokollstapel: Anwendung HTTP …   Deutsch Wikipedia

  • HTTPS — (avec S pour secured, soit « sécurisé ») est la combinaison de HTTP avec une couche de chiffrement comme SSL ou TLS. Il permet au visiteur de vérifier l identité du site auquel il accède grâce à un certificat d authentification émis par …   Wikipédia en Français

  • Ship transport — Water transport redirects here. For the transportation of water, see Water transportation. Harbour cranes unload cargo from a container ship at the Jawaharlal Nehru Port in Navi Mumbai, India …   Wikipedia

  • Domain Name System Security Extensions — Internet protocol suite Application layer BGP DHCP DNS FTP HTTP …   Wikipedia

  • Firesheep — Тип Расширение браузера Firefox Разработчик Eric Butler Операционная система MS Windows, Mac OS X, Linux Языки интерфейса английский Последняя версия 0.1 1[1] …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”