Sécurité web

HTTPS, Content Security Policy (CSP), etc… Protéger son site, son serveur, les données qu’on héberge des attaques en tout genre.

Extraits de code :

  • [.htaccess] Empêcher l'accès à la liste des fichiers d'un répertoire

    Quand un répertoire sur le serveur web n’a pas de fichier d’index (index.html, index.php), lorsqu’on saisit l’URL de ce répertoire, s’affiche alors la liste de tous les fichiers qu’il contient. Pour éviter ça, il y a une ligne à ne jamais oublier de mettre dans son .htaccess.

    Langage du code ci-dessous : Apache

    # Prevent directory browsing (don't list all files in a directory without a default document) 
    # https://htaccessbook.com/what-is-options-all/
    <IfModule mod_autoindex.c>
        Options All -Indexes
    </IfModule>
  • [.htaccess] En-têtes de sécurité

    Les en-​têtes de sécurité à mettre dans le fichier .htaccess à la racine de son site web. Certaines règles sont à personnaliser en fonction des cas.

    L’outil d’analyse Dareboost peut aider à comprendre comment et pourquoi mettre en place tout ça. J’ai découvert une bonne partie de ces paramètres grâce à lui.

    Langage du code ci-dessous : Apache

    <IfModule mod_headers.c>
    
        # Disable automatic resource type detection
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
        Header always set X-Content-Type-Options "nosniff"
    
        # Block all content when an XSS attack is suspected
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
        Header always set X-XSS-Protection "1; mode=block"
    
        # Block frame rendering for the website - Prevent "clickjacking" attacks
        # SAMEORIGIN value to allow WordPress and plugins updates
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
        Header always set X-FRAME-OPTIONS "SAMEORIGIN"
    
        # The server should not be able to communicate in HTTP when it has an HTTPS connection - Prevent "man in the middle" attacks
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
        # Max age = 1 year
        # Read this doc before: https://blog.dareboost.com/fr/2017/09/hsts-fiabiliser-connexions-securisees/
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"
    
        # Security policy on the source of resources (CSP) - Prevent XSS attacks
        # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
        # This code is to customize. Here, no external resource and no inline style or script are allowed. Be careful by using this. Test it carefully!
        Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; base-uri 'self';"
    
    </IfModule>
  • [.htaccess] Redirection www et HTTPS

    Mettre son site en HTTPS (avec un certificat SSL valide, bien sûr) est un pré-​requis dès lors qu’il y au moins un formulaire de contact ou une administration de site à laquelle se connecter.

    Code pratique à avoir sous la main (pour le côté pratique, j’ai aussi ajouté la redirection vers l’URL en www.) à placer dans le fichier .htaccess de son site web

    Langage du code ci-dessous : Apache

    <IfModule mod_rewrite.c>
        # Redirect HTTP to HTTPS
        RewriteEngine on
        RewriteCond %{HTTPS} !=on
        RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
        # Redirect to www.
        RewriteCond %{HTTP_HOST} !^www\.
        RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE,QSA]
    </IfModule>

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.