• Développement
  • Magento

Optimisation et sécurité avec CloudFlare

anthony_360f3c3132
Anthony Grutter, Chief Technical Officer - Co-fondateur
Le 11 décembre 2019
cloudflare_and_magento_c242613a08
  • ecommerce
  • Content Delivery Network

Lecture :5 minutes

Un CDN ( Content Delivery Network ) est un ensemble de serveurs présents à différents endroits dans le monde, qui a pour objectif de mettre en cache tout ou partie de votre page web, afin de les redistribuer plus rapidement aux utilisateurs.

 

C’est un outil indispensable pour tout projet, ces différents services rendront votre site plus rapide, peu importe la localisation de l’utilisateur.

 

 

Découvrez comment Cloudflare va améliorer les performances et la sécurité de votre site.

 

 

 

 

Quel est l’objectif de ce service

Cloudflare est avant tout reconnu pour être un Content Delivery Network (CDN).

Le principe du CDN est de faire transiter des ressources (généralement images, JS, CSS) via des serveurs faisant tampon. Les CDN mettent en cache à la volée les données, pour éviter d’appeler systématiquement le(s) serveur(s) hébergeant l’application qui se trouve derrière. Les serveurs applicatifs sont donc soulagés pour servir davantage de requêtes Web dynamiques et les CDN s’occupent de servir les contenus statiques en prenant soin de les stocker à proximité des utilisateurs par le biais de plusieurs datacenter.

 

Outre ce fonctionnement commun à tous les CDN, Cloudflare cherche à se différencier de ses concurrents en apportant des outils complémentaires, se greffant directement sur le CDN. Ainsi, plusieurs outils permettant d’améliorer la performance de son site ou la sécurité sont mis à disposition des clients.

 

 

Comment l’installer

C’est très rapide, en premier, il faut faire pointer un sous-domaine vers Cloudflare en éditant sa zone DNS (auprès de son fournisseur de nom de domaine).

 

Exemple : 

cdn 1H CNAME cdn.monsite.com.cdn.cloudflare.net. ;

 

Afin de bénéficier de tous les outils d’optimisation de performance et de sécurité, il faudra également le paramétrer pour “www”, ou bien enregistrer sa zone DNS complète directement chez Cloudflare, plutôt que de faire du Canonical Name.

 

Deuxièmement, il faut informer sur l’interface Cloudflare vers quelle adresse IP renvoyer lorsqu’il n’y a pas de cache disponible sur Cloudflare.

 

Client -> appel cdn.monsite.com -> cname vers cdn.monsite.com.cdn.cloudflare.net -> renvoie vers une IP définie par Cloudflare (masque l’IP réel du serveur, caché derrière)




Tarification

Il existe une version gratuite pour un usage personnel (blog, site perso, etc.).
Autrement nous passons à 20€/mois pour l’offre d’entrée Pro, puis 200€/mois avec des options supplémentaires pour l’offre Business.


Pour les grosses industries, nous recommandons l’offre Enterprise, permettant d’obtenir des garanties de disponibilités intéressantes.

 

Performance

 Voici une liste, non exhaustive (il faut dire que ca évolue vite), des options intéressantes à activer, rapides et efficaces pour des installations Magento.



Caching

CDN

Le CDN permet de cacher des fichiers proches de l’utilisateur (sur plusieurs continents). Ces fichiers sont ainsi plus rapides d’accès car ils sont proches de l’utilisateur.

Ils sont stockés uniquement si le serveur indique une date d’expiration pour ces fichiers.

 

Impact sur le backend

Chaque appel pouvant être servi directement par Cloudflare est un appel de moins sur les serveurs applicatifs. Le backend s’en portera donc forcément mieux et il pourra encaisser un trafic plus important.

 

Speed

Polish

Cette option permet d’optimiser automatiquement les images en réduisant leur poids ou en changeant leur format. On leur retire notamment les metadata inutiles, stockant des dates, le nom de l’appareil photo ou du logiciel de retouche.

Progressive JPEG

Les fichiers JPEG sont transformés, permettant un affichage progressif de l’image dans le navigateur : d’abord un peu flou puis devenant net. Ce qui donne une impression de rendu de page plus rapide.

WebP

Les images sont automatiquement converties au format WebP, si cette conversion obtient un fichier plus léger il est alors proposé aux navigateurs compatibles.

Lossless

Différentes options de compressions d’images sont proposées, permettant de conserver de manière stricte la qualité de l’image, ou en acceptant une réduction mineure de celles-ci.

 

Auto Minify

JS / CSS

Les fichiers JS et CSS sont automatiquement minifiés et compressés, plus besoin de s’en occuper côté applicatif. De plus la technologie utilisée est plus au point que celle qui est utilisée par certains modules. Nous n’avons jusqu’à aujourd’hui jamais constaté de problème de CSS et JS suite à une minification via Cloudflare.

HTML

Lorsque le HTML transite également via CLoudflare (c’est le cas si vous avez redirigé tout votre domaine par Cloudflare ou si vous avez passé votre sous-domaine “www.”), vous aurez alors la possibilité d’activer la minification HTML.

Concrètement, tous les espaces inutiles du DOM sont retirés avant que ce dernier soit envoyé au client, ce qui permet une économie de bande passante et donc une récupération du contenu plus rapide.

 

Brotli compression

En plus de la compression GZIP, très répandue et souvent activée de base sur beaucoup de services d’hébergement, Cloudflare propose la compression Brotli. Comme pour toutes ces options, ce type d’option ne sera activé que pour les navigateurs compatibles.

 

Brotli permet dans certains cas d’obtenir un taux de compression plus important qu’avec GZIP.

 

HTTP/2 prioritization

Le protocole HTTP/2 permet de récupérer plusieurs ressources d’un serveur en même temps, là où HTTP/1.1 ne permettait pas de paralléliser les téléchargements pour un même domaine.

 

Le protocole HTTP/2 est automatiquement activé sur Cloudflare. De plus, les requêtes sont ordonnées par Cloudflare afin de délivrer les ressources par importance, dans le but d’avoir le rendu de la page le plus rapide (CSS avant JS par exemple).

 

Mirage

L’option Mirage permet d’optimiser la délivrance des images. En fonction de la bande passante disponible (smartphone avec un réseau faible par exemple) et en fonction de la dimension de l’écran, Cloudflare va fournir une image dans une dimension adaptée.

 

Une image plus petite équivaut également à moins d’octets transmis au client.
Son affichage sera ainsi optimisé.



Rocket Loader

Rocket Loader permet de traiter le Javascript de manière asynchrone, quelle que soit l’application se trouvant derrière.

 

Dans le cas où vous n’avez pas un CMS doté de technologie JS comme RequireJS, c’est d’une très grande aide. C’est le cas pour Magento 1 par exemple.

 

Chaque tag JS, y compris les inlines, sont renommés à la volée dans le DOM HTML :

<script type="fb11ae27403af475b0318698-text/javascript">

 

Ainsi ils ne sont pas exécutés par le navigateur car d’un type non connu.

C’est la librairie RocketLoader qui va ensuite se charger de récupérer tous ces tags et leurs contenus afin de les charger après l’affichage de la page : 

<script src="https://ajax.cloudflare.com/cdn-cgi/scripts/95c75768/cloudflare-static/rocket-loader.min.js" data-cf-settings="fb11ae27403af475b0318698-|49" defer=""></script>

 

Si nécessaire, il est possible d’exclure certains tags pour ne pas être pris en charge par Rocket Loader.

 

Sécurité de l’application

 

WAF - Web Application Firewall

Lorsque tout le contenu du site transite par Cloudflare, il est possible d’activer des options améliorant la sécurité.

Le Web Application Firewall permet de filtrer et éliminer certaines requêtes suspectes.
SI l’activité ne semble pas légitime, la requête peut soit être rejetée, soit renvoyée vers un système de captcha afin de s’assurer qu’il ne s’agit pas d’un robot/pirate.

Une série de paramètres sont scrutés pour déterminer de la véracité d’une attaque : 

  • User Agent
  • Fréquence d’appel
  • URL appelée
  • Paramètres GET / POST
  • Origine de l’appel
  • Parcours

La force de ce WAF réside dans la communauté de Cloudflare.

En effet, une panoplie de règles sont proposées à activer.

On retrouve les règles OWASP (règles partagées d’une organisation mondiale à but non lucratif, libre), des règles spécifiques à Magento, Prestashop, Wordpress, PHP, Java, etc.

 

L’activité de tous les clients contribue à tenir ces règles à jour et de les alimenter.
Ainsi une attaque sur un site permet de faire bénéficier toute la communauté des nouvelles protections définies.

 

Il est également possible de définir ses propres règles, afin de pallier à une attaque immédiate ou non référencée.

 

Mitigation DDoS

La fréquence et la force des attaques par déni de service distribué (DDoS) sont en hausse. Le trafic passant par Cloudflare est protégé par des systèmes anti-ddos.

Des pics anormaux d’activité réseau sont donc absorbés sans que l’infrastructure serveur ne l’ai vu passer.

 

Abonnez-vous au blog pour ne rien louper