FAT78 - Artisan numérique
 

> Lab > Sécurité web

lundi 5 juillet 2021

Sécurité web

Sous ce titre simple se cache une problèmatique complexe visant à protéger un site web de tous échanges malveillants. Pour assurer sa sécurité maximale un site web devrait théoriquement interdire tout échange autre qu’avec des ressources internes ... ce qui est en pratique impossible : des vidéos youtube, des polices spécifiques, des scripts, sont couramment appelés depuis des sites externes ... même spip en a besoin pour ses ménus déroulants dans son interface d’administration.

On peut librement tester la sécurité d’un site web à l’aide du service "Mozilla Observatory" et obtenir un résultat chiffré et détaillé : voici celui de ce site réalisé le 2/7/2021.

-[Afficher le document ]-

N’ayant aucune connaissance dans le domaine de la sécurité-web, je me suis appuyé sur les explications très claires de ce blog : "https://www.nicolas-hoffmann.net/source/1697-Obtenir-une-bonne-note-sur-Mozilla-Observatory-HTTPS-CSP-SRI-CORS-HSTS-HPKP-etc.html".

Le premier obstacle à surmonter est le passage du site en https si votre hébergeur le permet en installant un "Certificat de sécurité" (gratuit ou payant).

Le deuxième obstacle consiste à ajouter des lignes de commande dans le fichier .htaccess sur le serveur à la racine de votre site web, afin de bloquer certains échanges et d’améliorer la sécurité-web.

Voici ce que j’ai ajouté à mon .htacces (pour ce site web, en http donc sans certificat de sécurité) me permettant de passer 8 tests sur 11 et d’obtenir un score de 40/100 :

RewriteEngine On

#permet aux navigateurs de se souvenir qu'il doit passer en https pour votre site (HSTS)
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

# Prevent browsers from incorrectly detecting non-scripts as scripts
Header set X-Content-Type-Options: nosniff

# Block site from being framed with X-Frame-Options and CSP
Header set X-Frame-Options: sameorigin

# Block pages from loading when they detect reflected XSS attacks
Header set X-XSS-Protection: 1

# CSP
Header always set Content-Security-Policy "report-uri http://www.fat78.net/spip.php?action=collecteur_csp ;"

Pour un site sous spip3.2 installé en https avec certificat de sécurité "Let’s encrypt" j’arrive à un très honorable 80/100 avec 10/11 tests passés avec les lignes suivantes ajoutées au fichier .htaccess :

RewriteEngine On

RewriteCond %{SERVER_PORT} 80
RewriteRule (.*)$ https://nomdusite.extension/$1 [R=301,L]

#permet aux navigateurs de se souvenir qu'il doit passer en https pour votre site (HSTS)
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

# Prevent browsers from incorrectly detecting non-scripts as scripts
Header set X-Content-Type-Options: nosniff

# Block site from being framed with X-Frame-Options and CSP
Header set X-Frame-Options: sameorigin

# Block pages from loading when they detect reflected XSS attacks
Header set X-XSS-Protection: 1

# CSP
Header always set Content-Security-Policy "object-src data: http: https: ;img-src 'self' ;frame-src 'self' ;connect-src 'self' ;font-src 'self' ;media-src 'self' ;report-uri https://nomdusite.extension/spip.php?action=collecteur_csp ;"

Ces paramétrages permettent de faire fontionner correctement mes sites sous spip2.1.26 et spip3.2 en autorisant le fonctionnement des scripts jquery et l’insertion des vidéos youtube. Attention, pour chaque site web il faut procéder un peu à tatons en ajoutant à .htaccess les lignes de commande une par une et en testant à chaque fois le fonctionnement du site, en particulier pour les commandes de la ligne "Content-Security-Policy" qui définissent, come son nom l’indique, la politique de sécurité du contenu du site.
La commande "report-uri https://nomdusite.extension/spip.php?action=collecteur_csp" est relative au plugin "spip_csp" qui peut être installé sous spip3 et permet d’affiner les paramètres CSP et de collecter les rapports de fonctionnement. Si ce plugin n’est pas installé, la commande est inopérante mais peut être conservée dans .htaccess.


SPIP | | Plan du site | Suivre la vie du site RSS 2.0