Activer le HSTS : pourquoi et comment

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Activer le HSTS : pourquoi et comment

    Bonsoir,

    Dernier post de la soirée pour défaire la bobine qu'était devenu ce fil de conversation

    De l'intérêt et de la méthode d'activer le HSTS :

    A ce sujet, Daneel écrit :
    Une fois l'ordre respecté dans le htaccess (https puis www), on peut envisager de renforcer la sécurité en activant HSTS.
    Il suffit généralement d'ajouter cette ligne dans le fichier htaccess :
    Code:
    Code:
    Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
    puis de tester à nouveau via https://hstspreload.org/

    Pourquoi respecter cet ordre et activer le HSTS ?

    Il y a toujours un laps de temps dans une redirection 301. Si la redirection est en http, il y a également un risque de sécurité d'où la nécessité d'avoir la règle HTTPS en premier. HSTS est une indication dans le header pour forcer la navigateur à charger immédiatement la page en https en ignorant tout appel http donc impossible aux pirates de détourner l'échange crypté.

    De plus, les navigateurs et Google poussent les créateurs de sites à accentuer la sécurité et optimiser le temps de chargement de leurs pages web. HSTS accélère le chargement en supprimant ce laps de temps même si ce dernier ne représente que quelques millisecondes.

    Comment ?

    La première règle dans le htaccess étant de passer de http à https avant de charger le header de la page. Pour supprimer ce temps, Il existe une liste de pré-chargement de site web développé par Chrome et désormais utilisé par la plupart des navigateurs ( https://caniuse.com/#feat=stricttransportsecurity ).

    Pour faire partie de cette fameuse liste, pas besoin d'être un grand site ou un expert VIP, il suffit simplement d'être validé avec le test sur https://hstspreload.org/puis d'accepter de faire partie de cette liste sur ce même site. Vous serez alors sur liste d'attente et ensuite accepté si votre site, votre nom de domaine (et sous-domaines) respectent toutes les conditions requises. Attention, vous pouvez annuler votre inscription mais cela peut prendre beaucoup plus de temps. En gros, il est difficile de faire machine arrière mais le gain est réel.
    Ce sujet me paraissait intéressant, mais il devenait difficile de développer au sein du fil initial.
    C'est pourquoi je le re-pose ici afin qu'on puisse échanger à ce propos uniquement.

    A vous lire,
    Bonne soirée.

    Florence
    --
    Flo, Ariège

    Il n'y a que celui qui a honte d'apprendre qui a peur de demander

  • #2
    bonjour, quelle est la question ?
    pourquoi activer hsts ? pour que les navigateurs forcent directement le chargement de la page via https meme si l utilisateur entre une adresse http.
    Cela leur fait comprendre que seul l url en https doit etre utilisée, et ce meme si une url htttp est utilsée pour acceder à ton site.
    La première url vers ton domaine entrée en http sera traitée et renvoyée vers https, les suivantes seront envoyée directement en https ce qui evites des requetes inutiles.
    Cela viens en complément de la redirection du htaccess.

    Par contre, dans la ligne que donnes daneel, il manques un argument pour utiliser la liste préchargée.
    Code:
    Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
    devrait être
    Code:
    Header set Strict-Transport-Security "max-age=31536000" env=HTTPS ; preload
    On peut inclure cette politique pour les sous domaines en utilisant la ligne de code ci dessous. Cela est preferable car cela limites les attaques sur ce protocole.
    [CODE]
    Code:
      Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    https://www.owasp.org/index.php/HTTP...ty_Cheat_Sheet

    Sur un serveur vps ou dédié, il est preferable de mettre cette ligne (ainsi que le contenu du fichier .htaccess) directement dans l'hote virtuel (virtualhost) pour obtenir un gain de performance.
    https://linux-audit.com/configure-hs...-apache-nginx/
    Faire partie de cette liste n'est pas une obligation pour activer hsts, mais quand on en fait partie le navigateur utilise directement https sans avoir besoin de faire de requetes supplémentaires

    Dernière édition par lefabdu51 à 21/11/2018, 11h59

    Commentaire


    • #3
      Bonjour.

      Pour info, ce code (Strict-Transport-Security: max-age=31536000; includeSubDomains; preload), sous cette forme, renseignée par dans mon htaccess à planté le site, page blanche avec une erreur… La syntaxe semble ne pas être acceptée. Si on insère cette ligne comme telle dans l'édition manuelle du htaccess par l'option d'aeSecure, il nous indique de suite une erreur de syntaxe.

      Mais j'ai p'tet mal pigé quelque chose…
      Cordialement.
      __
      Eddy !!!
      Tutoriels BreezingForms en Français : https://www.breezingforms.eddy-vh.com/

      Commentaire


      • #4
        Hello

        P'tet bien que oui... ;-)

        Voici une portion de mon propre .htaccess.

        Code:
        <IfModule mod_headers.c>
           # Force HTTPS (don't use this if you're still on http)
            Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"  env=HTTPS
        </IfModule>
        Bonne soirée.
        Christophe (cavo789)
        Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
        Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

        Commentaire


        • #5
          Bonjour,
          Le code donné par cavo789 ne provoque pas d'erreur sur la page mais ne suffit pas à valider le HSTS via le site https://hstspreload.org/

          Error: No HSTS headerResponse error: No HSTS header is present on the response.
          Tout comme pour Eddy, il y a peut être un truc que je n'ai pas compris ...
          "Si vous n’êtes pas impliqués émotionnellement dans ce que vous créez, laissez tomber."
          https://www.graphiquedesign-bf.com/

          Commentaire


          • #6
            Je répondais au message d'Eddy, je n'ai pas prétendu dire qu'il suffisait de mettre cette seule ligne (je parlais de portion de....)
            Christophe (cavo789)
            Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
            Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

            Commentaire


            • #7
              Envoyé par cavo789 Voir le message
              Je répondais au message d'Eddy, je n'ai pas prétendu dire qu'il suffisait de mettre cette seule ligne (je parlais de portion de....)
              Merci cavo789.
              En fait, Daneel a une nouvelle fois trouvé le moyen de titiller ma curiosité et je l'en remercie !
              J'ignore pourquoi ses posts me font cet effet mais il y a quelques minutes encore, je n'avais jamais entendu parler de HSTS et je me suis dit que je pourrais continuer à ignorer cela et me reposer et me divertir ou finir ma journée en apprenant un nouveau truc. Je ne pense pas être le seul à apprécier sa générosité et à y réagir aussi positivement, d'une manière aussi productive.

              En fait, j'ai réussi à modifier l'ordre des syntaxes rewrite dans mon fichier .htaccess en passant le forcing https en premier. Cela est validé par le site https://hstspreload.org/
              Maintenant, il me reste à placer l'en-tête HSTS et là, j'ai tenté de plusieurs manières d'y arriver via le fichier .htaccess en partant de la syntaxe donnée par lefabdu51, mais celle ci provoque chez moi également une erreur sur la page. Je me demande d'ailleurs si c'est bien sur le fichier .htaccess qu'il faut agir. Voilà où j'en suis.
              "Si vous n’êtes pas impliqués émotionnellement dans ce que vous créez, laissez tomber."
              https://www.graphiquedesign-bf.com/

              Commentaire


              • #8
                Hello,

                GraphiqueDesign Mille Mercis !!! Cela me touche

                Pour ce qui est de la ligne que l'on ajoute au fichier htaccess, effectivement je n'ai pas mis la directive "preload" car elle est nécessaire uniquement pour la validation.

                Si on veut être précis et vérifier la présence du module header, ces trois lignes fonctionnent (déjà testé) à copier en premier dans le fichier htaccess.
                (Déjà donné par Christophe)

                Code:
                 <IfModule mod_headers.c>
                Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
                </IfModule>
                En fait, je souhaite revenir sur l'importance de l'ordre entre la sécurisation https et l'url avec ou sans www ( je sais, je suis un peu casse-pied avec ça ! )
                https://forum.joomla.fr/forum/joomla...s-le-bon-ordre

                Si on interroge https://hstspreload.org/ sur des sites connus ( vous pouvez tester librement ) :

                on prends l'exemple de joomla.fr :



                Aie Aie ... Je suis encore surpris que l'on peut faire de cette erreur, qui peut être considérée comme un problème de sécurité pour certains.
                surtout que dans certains cas de figure, HSTS est activé mais inutile... bref, ce n'est pas très difficile de corriger le problème !

                Au final, vous devez obtenir l'information suivante (testé sur un site joomla qui n'est pas encore présent dans la liste...)



                Bon courage et n'hésitez pas à nous indiquer si votre site est ok ou dans la liste d'attente
                Dernière édition par daneel à 23/11/2018, 01h29
                Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                Commentaire


                • #9
                  Je viens de tester mon site joomxtensions.com avec ce code en début de .htaccess :
                  <IfModule mod_headers.c>
                  # Force HTTPS (don't use this if you're still on http)
                  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
                  </IfModule>
                  RewriteEngine On
                  RewriteCond %{SERVER_PORT} ^80$ [OR]
                  RewriteCond %{HTTPS} =off
                  RewriteRule ^(.*)$ https://joomxtensions.com/$1 [R=301,L]
                  RewriteCond %{HTTP_HOST} ^joomxtensions.com [NC]
                  RewriteRule ^(.*)$ https://www.joomxtensions.com/$1 [R=301,L]
                  Résultat :
                  Response error: No HSTS header is present on the response.
                  Quelle erreur ai-je faite ?
                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire


                  • #10
                    Bonjour

                    J'ai utilisé le code de Cavo et celui de Daneel et ça fonctionne parfaitement :

                    #Uncomment if want to force HTTPS and if your server can handle it
                    # verification cond-rule HTTPS en premier
                    RewriteCond %{HTTPS} off
                    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

                    # puis cond-rule pour la redirection www
                    RewriteCond %{HTTP_HOST} ^monsite.fr [NC]
                    RewriteRule ^(.*)$ https://www.monsite.fr/$1 [L,R=301,NC]


                    <IfModule mod_rewrite.c>

                    RewriteEngine On

                    RewriteCond %{HTTPS} !on
                    RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

                    RewriteCond %{HTTP_HOST} !^www\. [NC]
                    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

                    </IfModule>


                    <IfModule mod_headers.c>
                    # Force HTTPS (don't use this if you're still on http)
                    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
                    </IfModule>

                    Je précise que j'ai supprimé cette partie du code de Aesecure pour que ça fonctionne:

                    #AESECURE_WITHORNOTWWW_START
                    #aeSecure 7.2

                    # Redirect non-www to www pages, avoid duplicate content. Add prefix

                    <IfModule mod_rewrite.c>

                    RewriteEngine On

                    RewriteCond %{REQUEST_URI} !/aesecure/.*$

                    RewriteCond %{HTTP_HOST} !^www\.

                    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

                    </IfModule>
                    #AESECURE_WITHORNOTWWW_END


                    Merci à eux
                    Dernière édition par domallia à 22/11/2018, 21h00

                    Commentaire


                    • #11
                      Bonsoir

                      Je viens de tester aussi sur mon site (mon nom de famille suivi de .be) et j'ai aussi "Response error: No HSTS header is present on the response."

                      Toutefois si je retire la redirection www. pour ne garder que la redirection https, là, il est tout content et tout vert.

                      Il semble *exiger* qu'on teste avec son nom de domaine et pas avec un sous-domaine même si ce dernier est www.

                      Je vais encore un peu chercher, juste par curiosité car, bien sûr, pas question de ne pas rediriger vers www. juste pour que le site hsts preload soit content ;-)


                      Christophe (cavo789)
                      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                      Commentaire


                      • #12
                        En ce qui me concerne, j'ai bien testé joomxtensions.com sans le www
                        Donc je ne comprends pas le message de réponse du site de test
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #13
                          On ne sait pas compris Robert : quand tu testes joomxtensions.com, tu as une redirection vers www.; redirection qui est faite par l'entremise de ton .htaccess. Il faut "briser" cette programmation pour ne plus que rediriger http vers https et, alors, tu n'auras plus le message d'erreur.
                          Christophe (cavo789)
                          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                          Commentaire


                          • #14
                            OK Christophe, mais ensuite si je teste www.joomxtensions.com, j'ai une nouvelle erreur. C'est une histoire de fou !
                            Si je supprime les deux dernières lignes qui forcent le passage en https://www. j'ai bien une validation pour joomxtensions.com, si je teste www.extensions.com, il me répond que c'est un sous-domaine et que je dois d'abord valider sans www... Bref, j'ai l'air d'un c.n !
                            Si je les remets pour tester www.joomxtensions.com, le site de test demande à ce que je teste dans, alors que le code inclut les sous-domaines, donc sur mon site pour lequel j'ai décidé de garder les www, ou sur tout autre sous-domaine, je n'aurai jamais de validation.
                            La question est donc double : qui se préoccupe de ce code et à quoi sert ce site de test s'il n'est pas capable de reconnaître le hsts sur un sous-domaine ?
                            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                            Commentaire


                            • #15
                              Bonjour

                              La nuit derrière moi, les idées un peu mieux en place, cela me fait dire que ce site ne fait jamais que tester le domaine principal et le but du jeu est de dire "tout les sous-domaines sur ce domaine-là seront en https". Du coup, l'outil n'a pas besoin de tester un sous-domaine (même s'il se nomme www).

                              Mais, comme les bons élèves SEO forcent le www, alors on est un peu embêté avec cet outil-là.

                              Il faudrait forcer la version non www. pour qu'il soit content.

                              Mais en non www, là, c'est souvent les outils comme CloudFlare (les CDNs) qui ne sont alors pas content.

                              Ceci est l'état de mon interprétation ce matin ;-)
                              Christophe (cavo789)
                              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
                              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X