Headers correction : Différence entre versions

De Docaposte Cyberdéfense
Aller à : navigation, rechercher
(Page créée avec « ===<div style="color:#FFFFFF; background-color: #046AAF">'''X-FRAME-OPTIONS'''</div>=== L’en-tête HTTP X-Frame-Options permet d’indiquer aux navigateurs supportant... »)
 
(Page blanchie)
 
Ligne 1 : Ligne 1 :
−
===<div style="color:#FFFFFF; background-color:  #046AAF">'''X-FRAME-OPTIONS'''</div>===
 
  
−
L’en-tête HTTP X-Frame-Options permet d’indiquer aux navigateurs supportant cette extension, d’afficher ou non une page dans un champ HTML ‘<frame>’, ‘<iframe>’ ou ‘<object>’.
 
−
 
−
L’Intérêt cet en-tête est de se protéger des attaques de type « ClickJacking », en s’assurant que le contenu du site internet à protéger ne soient pas embarqués dans d’autres sites.
 
−
 
−
 
−
 
−
Il est possible d’utiliser 3 valeurs de paramétrage :
 
−
 
−
*'''DENY :''' La page ne pourra pas être affichée dans une balise <(i)frame>
 
−
 
−
*'''SAMEORIGIN :''' La page ne pourra être affichée dans une balise <(i)frame>que si la page provient du même domaine et du même port (SOP : Same Origin Policy )
 
−
 
−
*'''ALLOW-FROM uri :''' La page ne pourra être affichée dans une balise <(i)frame> que si elle provient de l’origine spécifiée.
 
−
 
−
Si vous spécifions DENY, il sera impossible de faire des frames dans le site Internet, même avec des pages internes.
 
−
Si vous souhaitez intégrer des frames de votre site (même domaine), il faudra utiliser SAMEORIGIN mais il faudra faire attention que les pages à inclure soient présentes sur le même protocole (par exemple il n’est pas possible d’inclure la page http://www.docapost.fr/page1.html depuis la page https://www.docapost.fr/page2.html).
 
−
Enfin, si vous avez besoin d'intégrer des pages externes, il faudra utiliser ALLOW-FROM et spécifier le domaine ou la page.
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #707173">'''Configuration'''</div>===
 
−
 
−
  <btn class="btn-primary">
 
−
        x-frame-options-bigip|Bigip
 
−
    </btn>
 
−
 
−
  <btn class="btn-primary">
 
−
        x-frame-options-Apache|Apache
 
−
    </btn>
 
−
 
−
<btn class="btn-primary">
 
−
        x-frame-options-iis|IIS
 
−
    </btn>
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #046AAF">'''X-XSS-Protection'''</div>===
 
−
 
−
Cet en-tête permet d’activer les filtres anti-xss incorporés dans certains navigateurs. Seuls Internet Explorer, Google Chrome et Safari (WebKit) supportent cet en-tête.
 
−
 
−
Les réglages suivants sont valides :
 
−
 
−
*0 : Désactive les protections XSS du navigateur (non recommandé)
 
−
*1 : Active les protections XSS du navigateur
 
−
*1 : mode=block : Active la protection XSS du navigateur et bloque la réponse au lieu de nettoyer les valeurs
 
−
*1 : report=http://site.com/report : Directive spécifique à Chrome et WebKit lui indiquant d’envoyer, via une requête POST, l’attaque XSS potentielle à l’url spécifiée au format JSON.
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #707173">'''Configuration'''</div>===
 
−
 
−
  <btn class="btn-primary">
 
−
        x-xss-protection-bigip|Bigip
 
−
    </btn>
 
−
 
−
  <btn class="btn-primary">
 
−
        x-xss-protection-Apache|Apache
 
−
    </btn>
 
−
 
−
<btn class="btn-primary">
 
−
        x-xss-protection-iis|IIS
 
−
    </btn>
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #046AAF">'''Content-Security-Policy'''</div>===
 
−
 
−
L’en-tête Content-Security-Policy permet de restreindre l’accès à une ressource (un script JavaScript, une feuille de style, etc.) dans une page web à certains sites autorisés. Cela permet par exemple d‘atténuer l’impact d’une éventuelle faille XSS en autorisant le chargement de script JavaScript que depuis le domaine du site Internet.
 
−
 
−
Si le navigateur du client ne reconnaît pas cet en-tête, ce dernier l’ignore complètement, et le fonctionnement ne change pas.
 
−
 
−
Il existe différents nommages de cet en-tête, suivant l’époque où il a été implémenté dans les navigateurs :
 
−
 
−
*Content-Security-Policy : Définit par le W3C et utilisé par Chrome 25 et supérieur, FireFox 23 et supérieur, Opéra 19 et supérieur.
 
−
*X-Content-Security-Policy : Utilisé par Firefox jusqu’à la version 23 et Internet Explorer 10 (avec une implémentation partielle).
 
−
*X-WebKit-CSP : Utilisé par Chrome jusqu’à la version 25.
 
−
Les différentes directives utilisables sont :
 
−
 
−
*default-src : Définit la politique pour les types ressources ou une directive spécifique n’est pas définie
 
−
*script-src : Définit quels scripts peuvent être exécutés
 
−
*object-src : Définit d’où la ressource peut charger des plugins
 
−
*style-src : Définit les feuilles de styles utilisables
 
−
*img-src : Définit d’où la ressource peut utiliser les images
 
−
*media-src : Définit d’où la ressource peut utiliser les vidéos et les sons
 
−
*frame-src : Définit d’où la ressource peut embarquer des frames
 
−
*font-src : Définit d’où la ressource peut utiliser des polices de caractères
 
−
*connect-src : Définit les URI que la ressource peut charger via scripting
 
−
*form-action : Définit les URI que la ressource peut utiliser comme action d’un élément de formulaire
 
−
*sandbox : Spécifie la politique de bac-à-sable HTML
 
−
*script-nonce : Définit l’exécution de script en exigeant la présence d’un nonce
 
−
*plugin-types : Définit une liste de plugins qui peuvent être invoqués
 
−
*reflected-xss : Permet d’activer ou désactiver les heuristiques des navigateurs pour la protection *XSS (identique à l’en-tête X-XSS-Protection)
 
−
*report-uri : Spécifie une URI vers laquelle le navigateur enverra un rapport en cas de violation de *politique
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #707173">'''Configuration'''</div>===
 
−
 
−
  <btn class="btn-primary">
 
−
        csp-bigip|Bigip
 
−
    </btn>
 
−
 
−
  <btn class="btn-primary">
 
−
        csp-Apache|Apache
 
−
    </btn>
 
−
 
−
<btn class="btn-primary">
 
−
        csp-iis|IIS
 
−
    </btn>
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #046AAF">'''HTTP Strict Transport Security'''</div>===
 
−
HTTP Strict Transport Security
 
−
L’en-tête HTTP Strict Transport Security (HSTS) est un mécanisme de sécurité permettant à un serveur Web d’indiquer à un navigateur compatible d’utiliser une connexion sécurisée (HTTPS).
 
−
 
−
Lorsque l’en-tête HSTS est activé, le navigateur compatible agit de la façon suivante :
 
−
 
−
Il remplace tous les liens non sécurisés par des liens sécurisés (i.e. il remplace HTTP par HTTPS),
 
−
Si une connexion sécurisée ne peut être effectuée (Certificat auto-signé par exemple), le navigateur affiche un message d’erreur et interdit l’accès au site (il est impossible pour l’utilisateur d’accepter un certificat non valide).
 
−
Tous les navigateurs ne sont pas compatibles avec cet en-tête. Seuls les suivants le sont :
 
−
 
−
*Google Chrome et Chromium depuis la version 4.0.211.0
 
−
*Firefox depuis la version 4.0
 
−
*Opera depuis la version 12
 
−
*Safari sous OS X Mavericks
 
−
*Spartan et Internet Explorer 11
 
−
 
−
Note : L’extension pour Chrome, Firefox et Opera « HTTPS Everywhere » généralise le concept de HSTS.
 
−
 
−
L’en-tête HSTS accepte différentes directives :
 
−
 
−
*max-age : nombre de secondes, après la réception de l’en-tête, durant lesquelles le navigateur adoptera la politique
 
−
*includeSubDomains : indique qu’il faut appliquer la politique aussi sur les sous domaines
 
−
La directive max-age est obligatoire alors que la directive includeSubDomains ne l’est pas.
 
−
 
−
Il convient de mettre une durée aussi longue que possible afin de s’assurer que la durée de navigation de l’utilisateur soit inférieure à ce temps limite. Par exemple, si vous spécifiez 86400 secondes, l’utilisateur peut naviguer et être protéger sur le site pendant 24 heures consécutives.
 
−
 
−
Note : L’en-tête Strict-Transport-Security est ignoré par le navigateur si on accède à votre site en utilisant le protocole HTTP ; en effet, un attaquant malveillant peut intercepter les connexions via HTTP et injecter un autre en-tête ou le supprimer.
 
−
 
−
Quand on accède à votre site via HTTPS sans erreur de certificat, le navigateur sait que le site est compatible HTTPS et respectera l’en-tête Strict-Transport-Security.
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #707173">'''Configuration'''</div>===
 
−
 
−
  <btn class="btn-primary">
 
−
      hsts-bigip|Bigip
 
−
    </btn>
 
−
 
−
  <btn class="btn-primary">
 
−
        hsts-Apache|Apache
 
−
    </btn>
 
−
 
−
<btn class="btn-primary">
 
−
        hsts-iis|IIS
 
−
    </btn>
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #046AAF">'''X-Content-Type-Options'''</div>===
 
−
 
−
Cet en-tête permet de faire une vérification stricte des types Mime. Elle n’accepte qu’une seule directive : nosniff.
 
−
 
−
Si cet en-tête est spécifié, le navigateur compatible (Google Chrome ou Internet Explorer) ne chargera, par exemple, que les feuilles de style dont le type Mime est « text/css ».
 
−
 
−
Cela permet de se protéger des attaques de type « drive-by-download ». Si cet en-tête n’est pas spécifié, le navigateur va essayer de déterminer le type de données en analysant le contenu de la ressource demandée.
 
−
 
−
En ce qui concerne une référence à un script, le type Mime doit être un de ceux-ci :
 
−
 
−
*application/ecmascript
 
−
*application/javascript
 
−
*application/x-javascript
 
−
*text/ecmascript
 
−
*text/javascript
 
−
*text/jscript
 
−
*text/x-javascript
 
−
*text/vbs
 
−
*text/vbscript
 
−
 
−
===<div style="color:#FFFFFF; background-color:  #707173">'''Configuration'''</div>===
 
−
 
−
  <btn class="btn-primary">
 
−
        x-content-type-options|Bigip
 
−
    </btn>
 
−
 
−
  <btn class="btn-primary">
 
−
        x-content-type-options|Apache
 
−
    </btn>
 
−
 
−
<btn class="btn-primary">
 
−
        x-content-type-options|IIS
 
−
    </btn>
 

Version actuelle datée du 26 juillet 2018 à 11:06