Question sur les entêtes http, HSTS et CSP

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

  • Question sur les entêtes http, HSTS et CSP

    Bonjour,

    Après les infos que m'a données Fred2FR3 sur cette question, je reste perplexe.
    Deux sites sur le même serveur, avec la même version de Joomla! et le même paramétrage des options du plugin entêtes http ont pour un un score A, l'autre un score B sur le site https://securityheaders.com/
    La différence se trouve au niveau de CSP, et je ne vois vraiment pas quoi faire.

    Le score A a cependant cette mention :
    Content-Security-Policy This policy contains 'unsafe-inline' which is dangerous in the default-src directive.
    Je ne trouve pas où je pourrais gérer ce "unsafe-inline".

    Pour arriver au score A, j'ai tout activé des options du plugin, sans rien ajouter. J'ai reporté ces paramètres sur l'autre site et sur mon site pro (hébergé sur le même type de serveur : ces deux-là ont un score B avec cette mention
    Cliquez sur l'image pour l'afficher en taille normale  Nom : image.png  Affichages : 0  Taille : 37,6 Ko  ID : 2050179
    Comment expliquer cette différence avec les mêmes paramètres sur les mêmes types de serveurs, mêmes versions de Joomla! et de PHP (8.0.28) ?

    Merci de votre aide !
    "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

  • #2
    Bien, après multiplication des tests, l'activation (en plus de celle de HSTS) de tous les paramètres CSP sauf Style hashes, plus la désactivation de Report only me permet d'avoir des scores A sur tous les sites vérifiés.
    Il reste sur securityheaders.com le message concernant "Permissions policy" qui n'est pas géré par le plugin.
    "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


    • #3
      Re moi,
      Fais ca directement dans le .htaccess. Par exemple tu a éveillé mes chakras ce matin avec les redirections, du coup, j'ai géré les miennes directement dans le .htaccess
      ## Begin - Custom redirects
      #
      # If you need to redirect some pages, or set a canonical non-www to
      # www redirect (or vice versa), place that code here. Ensure those
      # redirects use the correct RewriteRule syntax and the [R=301,L] flags.
      #
      # Redirect to domain without www.
      RewriteCond %{HTTPS} off
      RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
      RewriteRule .* http://%1%{REQUEST_URI} [R=301,L]
      # Same for HTTPS:
      RewriteCond %{HTTPS} on
      RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
      RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
      ## End - Custom redirects
      Je ne force pas via l'admin de Joomla

      Pour les CSP, voici ce que j'utilise sur un WP :
      <IfModule mod_headers.c>
      Header alwayssetStrict-Transport-Security"max-age=31536000; includeSubDomains; preload"
      Header setReferrer-Policy"no-referrer"
      Header setX-Content-Type-Options"nosniff"

      # Generator for Permissions-Policy https://www.permissionspolicy.com/

      #Header set Permissions-Policy "accelerometer=(self), \
      ambient-light-sensor=(self), \
      autoplay=(self), \
      battery=(self),\
      camera=(self), \
      cross-origin-isolated=(self), \
      display-capture=(self), \
      document-domain=(self), \
      encrypted-media=(self), \
      execution-while-not-rendered=(self), \
      execution-while-out-of-viewport=(self), \
      fullscreen=(self), \
      geolocation=(self), \
      gyroscope=(self), \
      keyboard-map=(self), \
      magnetometer=(self), \
      microphone=(self), \
      midi=(self), \
      navigation-override=(self), \
      payment=(self), \
      picture-in-picture=(self), \
      publickey-credentials-get=(self), \
      screen-wake-lock=(self), \
      sync-xhr=(self), \
      usb=(self), \
      web-share=(self), \
      xr-spatial-tracking=(self)"

      # Generator for Content-Security-Policy https://report-uri.com/home/generate

      Header set Content-Security-Policy "default-src 'none'; \
      script-src 'self''unsafe-eval'; \
      script-src-elem 'self''unsafe-inline'https://www.googletagmanager.com/gtag/; \
      script-src-attr 'self''unsafe-inline'; \
      style-src 'self''unsafe-inline''unsafe-hashes'; \
      style-src-elem 'self''unsafe-inline''unsafe-hashes'https://fonts.googleapis.com/; \
      style-src-attr 'self''unsafe-inline''unsafe-hashes'; \
      img-src *https://secure.gravatar.comdata:; \
      font-src 'self'https://fonts.gstatic.com/data:; \
      connect-src 'self'; \
      media-src 'self'; \
      object-src 'none'; \
      child-src 'self'; \
      frame-src 'self'https://*.google.com/map/; \
      worker-src 'self'; frame-ancestors 'self'; \
      form-action 'self'; \
      upgrade-insecure-requests; \
      block-all-mixed-content; \
      sandbox allow-formsallow-modalsallow-same-originallow-scriptsallow-top-navigationallow-popupsallow-pointer-lock;"

      Tu peux ainsi constaté que j'ai malheureusement besoin de certaines instructions qui sont propre a WP comme des unsafe-eval et unsafe-inline que j'espere ne plus rencontrer sous Joomla!, je verai ca plus tard et t'en ferai part.

      Pour affiner de la sorte, tu dois utilisé la console sur ton navigateur. En effet, si tu bloques certains unsafe, bha ton site fonctionnera mal et la console te dira explicitement ce que tu bloques. Par exemple le script-unsafe-inline autorise le JS dans ton template, pareil pour le style avec les balises <style>

      Quand on va plus loin, on peux meme specifier l'url exacte ou tu autorise tel ou tel spécification, mais c'est beaucoup de travail car tu dois etudier chacune de tes pages. De memoire par exemple, j'avais du JS qui ne fonctionnais plus dans l'admin de WP.
      On peux aussi bloquer avec des exeptions comme img-src *https://secure.gravatar.com data:

      Commentaire


      • #4
        Bonjour Robert,

        Pour le permissions-policy, cela se passe sur le 1er onglet.

        Cliquez sur l'image pour l'afficher en taille normale

Nom : httpheader.jpg 
Affichages : 263 
Taille : 75,0 Ko 
ID : 2050201
        N'abuses pas sur les chocolats,
        Pascal
        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Pour info, en plus du HSTS, au niveau de l'onglet CSP, j'ai retiré toutes les directives et j'ai paramétré comme suit :
          Cliquez sur l'image pour l'afficher en taille normale

Nom : csp.jpg 
Affichages : 248 
Taille : 48,1 Ko 
ID : 2050203

          Avec ces paramètres, j'obtiens A+ sur tous mes sites.

          Bon weekend pascal
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Merci à vous deux.
            Fred, les ajouts dans le .htaccess, je ne suis pas à l'aise...

            Pascal, comment as--tu A+ ? avec les mêmes paramètres, je n'ai que A et la mention des "Permissions Policy" en rouge.
            "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


            • #7
              Pour info comme je suis nouveau, vous trouvez ca ou ?
              C'est un module/plugin ?

              [edit] j'ai trouvé

              Tu as besoin d'activé les nonce , tu es certain ?
              Dernière édition par Fred2FR3 à 09/04/2023, 17h43

              Commentaire


              • #8
                C'st le plugin Entêtes http ou Http headers si tu es en anglais dans l'administration.
                "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


                • #9
                  Envoyé par RobertG Voir le message
                  ...

                  Pascal, comment as--tu A+ ? avec les mêmes paramètres, je n'ai que A et la mention des "Permissions Policy" en rouge.
                  C'est sur l'écran de mon 1er message : cliques sur le + de forcer les entêtes HTTP et tu as "permission-policy" dans la liste.

                  Pour les valeurs à renseigner, j'ai mis camera=(),microphone=(),geolocalisation=() juste pour avoir des valeurs car je n'en ai pas besoin sur mes sites.



                  Pascal
                  If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                  Commentaire


                  • #10
                    Faut mettre '(self)' ou '(none)' en lieu et place de '()'
                    Ce n'est pas propre. Il ne faut pas chercher le A+ mais l'efficacité de la protection donnée au site et aux utilisateurs.

                    Commentaire


                    • #11
                      pour ma part j'ai rajouté script-src 'self' et script-src-elem 'self' pour plus de sécurité mais le test Lighthouse dit : refus d'exécuter ces directives :

                      Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'strict-dynamic' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present.

                      Je ne comprend pas.

                      Note : dans en têtes HTTP j'ai mis la directive Content-Security-Policy
                      Dernière édition par pjuignet à 09/04/2023, 18h34

                      Commentaire


                      • #12
                        Désolé, j'avais raté cette image.
                        J'ai bien trouvé ce paramétrage que je n'avais pas remarqué, mais dans la doc accessible depuis la page de doc Joomla! https://scotthelme.co.uk/a-new-secur...eature-policy/, je ne trouve pas quoi ajouter comme paramètres. C'est vraiment pas mon truc !
                        "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
                          Envoyé par pjuignet Voir le message
                          pour ma part j'ai rajouté script-src 'self' et script-src-elem 'self' pour plus de sécurité mais le test Lighthouse dit : refus d'exécuter ces directives :

                          Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'strict-dynamic' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present.

                          Je ne comprend pas.

                          Note : dans en têtes HTTP j'ai mis la directive Content-Security-Policy
                          Il te faut les autoriser, mon exemple plus haut te montre comment faire

                          ex:
                          script-src-attr 'self''unsafe-inline'; \
                          style-src 'self''unsafe-inline''unsafe-hashes'; \
                          Dernière édition par Fred2FR3 à 09/04/2023, 19h13

                          Commentaire


                          • #14
                            Déjà essayé, ça ne marche pas
                            La réponse est
                            Notez que 'unsafe-inline' est ignoré si une valeur de hachage ou nonce est présente dans la liste source.

                            Commentaire


                            • #15
                              Envoyé par pjuignet Voir le message
                              Déjà essayé, ça ne marche pas
                              La réponse est
                              Notez que 'unsafe-inline' est ignoré si une valeur de hachage ou nonce est présente dans la liste source.
                              Je me dois de repéter que je debute sur joomla! et je suis navré de vous induire en erreur. Pardon...
                              Notez que 'unsafe-inline' est ignoré si une valeur de hachage ou nonce est présente dans la liste source.
                              Vous devez autoriser le hash
                              Dernière édition par Fred2FR3 à 09/04/2023, 21h16

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X