Apache : mise en œuvre du module Brotli

BrotliApache : mise en œuvre du module Brotli est un système de compression sans perte. Il a été utilisé par Google pour compresser les fichiers de fontes de type WOFF2. A partir d’Apache 2.4.26, il constitue une méthode alternative à la compression deflate utilisée jusqu’à présent pour minimiser le transfert de données entre le serveur et le navigateur.

Installation sur Fedora 28

A l’occasion du passage de la Fedora 27 à la 28, j’ai découvert que le mod_brotli s’était automatiquement installé avec Apache. Vous pouvez vérifier avec la commande :

find / -name mod_brotli.so

Le chargement du module se fait à partir du fichier /etc/httpd/conf.modules.d/00-base.conf, dans lequel vous trouverez cette directive :

LoadModule brotli_module modules/mod_brotli.so

Une configuration ciselée en fonction du User-Agent

La compression Brotli est supportée par les versions des navigateurs suivants :

J’ai fait le choix d’appliquer la compression selon les types MIME et la version du navigateur. Il est très inutile de compresser les images gif, jpe?g et png.

<If "%{HTTP_USER_AGENT} =~ m# (Edge/(1[5-9]|[2-9][0-9])\.[0-9]{5}|Firefox/[4-9][0-9]\.[0-9]|Chrome/[5-9][0-9]\.[0-9]\.[0-9]{4}\.[0-9]{3}|OPR/[3-9][0-9]\.[0-9]\.[0-9]{4}\.[0-9]{2}|Safari/(60[4-9]|[7-9][0-9]{2})\.[0-9](\.[0-9]{2})?)($| )#">
	AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/javascript text/xml image/svg+xml
	AddOutputFilterByType BROTLI_COMPRESS application/javascript application/xml application/xhtml+xml application/rss+xml
</If>
<Else>
	AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript text/xml image/svg+xml
	AddOutputFilterByType DEFLATE application/javascript application/xml application/xhtml+xml application/rss+xml
</Else>

Il est recommandé, dans la configuration, Apache d’ajouter ces deux lignes, afin de permettre d’accéder aux contenus derrière un proxy si le navigateur ne prend pas en charge la compression et si vous utilisez le User-Agent pour gérer des exclusions :

Header append Vary User-Agent
Header append Vary Accept-Encoding

Je vais jeter un œil dans les jours qui viennent à quelques modules intéressants comme :

Documentation

Apache  / Lamp 

Commentaires

bonjour,

j’ai une chose étrange sur cette page, un carré qui se positionne sur la page et affiche des icônes (facebook, google…)
au niveau code, c’est dans cette section

comportement identique sur 2 navigateurs différents
c’est voulu ?

@craintdegun

J’ai rien du tout sur mon navigateur.

c’est une section de code avec id = kgu316n9tie3jbddeabwy9

c’est après le bloc title = Les expressions dans le serveur HTTP Apache
et ce n’est que sur cette page, ce qui m’intrigue
un résidus d’extension ?
car je vois ceci dans le code (je mets des espaces des fois que le lien ne passe pas en commentaire)
moz-extension :// b1efb8d5-0cba-44e6-982b-af974e3bcaa8 / icons / open_link.png

@craintdegun

J’ai rien de tout ça. Et Ctrl+R ou Ctrl+F5 ?

Je me suis intéressé à Brotli un petit moment, mais étant donné que ça permet les mêmes attaques BREACH qu’avec la compression GZIP, et que le HTTPS est amené à être majoritaire, est-ce que c’est pas un peu trop tard (sans aller jusqu’à inutile) ?

@Sebooss666

Je l’ai activé pour les nouvelles versions de navigateur. J’ai la sensation que le site est plus rapide. Au doigt mouillé. ;+)

aujourd’hui, plus rien …
mais j’avais constaté ce comportement avec 2 navigateurs différents sur la même connexion et le même ordinateur
puis avec un autre autre navigateur sur autre ordinateur avec une autre connexion internet

@Denis ma question était plutôt orientée sécurité. Je sais que brotli fait pas semblant sur les perfs de compression (au prix d’un coût cpu un poil plus élevé côté serveur), et qu’il est suffisamment mature pour que le gain soit ressenti côté client.

Mais dans tous les audits sur HTTPS où la compression est activée, on se prend des « attention, BREACH possible » du coup les clients demandent à ce qu’on corrige, ce qui veut dire désactiver la compression :/

@Seboss666

C’est valable aussi pour le Gzip. Et il y a de sacrées conditions pour que ça marche !

-> http://breachattack.com/

J’ai cherché qui aurait été victime de ce genre d’attaques dans mon agrégateur. Rien. Demande à ton client de trouver un cas dans lequel la faille aurait été mise en lumière.

La solution passe par l’utilisation du referer, du remote host dans le code applicatif au niveau de la gestion de l’authentification. La base, quoi ! ;+)

Après, est-ce que tous les CMS le gèrent ? Et là, c’est une autre affaire.

Laisser un commentaire

(requis)

(requis)