J'ai récemment changé ma configuration Nginx pour rediriger tout le trafic HTTP en HTTPS (et tout le trafic www vers le no www).
Aurait-il de sens pour aussi ajouter add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
à mes blocs de serveur aussi? Ou c'est inutile depuis que je redirige déjà tout le trafic? Serait génial de connaître les avantages (et les inconvénients, le cas échéant).
En cas de pertinence, ma configuration d'hôte virtuelle actuelle est la suivante:
server {
server_name example.com www.example.com;
listen 80;
return 301 https://example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
... other SSL related config ...
return 301 https://example.com$request_uri;
}
server {
server_name example.com;
listen 443 ssl;
... other SSL related config ...
... remaining server configuration ...
}
HSTS indique au navigateur d'utiliser toujours HTTPS, plutôt que HTTP. Ajout de cette configuration peut réduire le besoin de transfert de HTTP à HTTPS, de sorte qu'il peut très légèrement Augmentez les performances du site Web et très légèrement Diminuer la charge du serveur.
Pour référence, voici les en-têtes de sécurité que j'utilise sur mes sites Web basés sur My Nginx. Je l'enregistre dans un seul fichier et l'inclure à partir de tous les serveurs qui en ont besoin, y compris des serveurs HTTP et HTTPS. Cela permet de charger certaines ressources communes telles que Google et Facebook.
# Security headers
add_header Strict-Transport-Security "max-age=2592000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self' www.google-analytics.com ajax.googleapis.com www.google.com google.com gstatic.com www.gstatic.com connect.facebook.net facebook.com;";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "Origin";
Clarification
Vous avez toujours besoin de la redirection HTTP sur HTTPS en place.
La réponse acceptée est géniale mais est devenue obsolète et a une faille que j'ai trouvée tout en recherchant la ligne ligne-ligne.
La durée de l'en-tête HSTS doit avoir au moins trois mois pour satisfaire les exigences de sécurité. J'ai utilisé ce qui suit dans mon extrait d'en-têtes de sécurité pour obtenir un A + sur le test SSL:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
Deuxièmement, l'utilisation de X-Frame-Options
est obsolète (et n'a jamais été soutenu par de nombreux navigateurs majeurs). La norme actuelle (c'est-à-dire implémentée dans tous les grands navigateurs modernes) est Content-Security-Policy
(Csp).
add_header Content-Security-Policy 'frame-ancestors https://mywebapp.mywebsite.example';
Comme il ressort de l'exemple de l'exemple des en-têtes CSP devra être défini sur une base par site (à l'instar de la regex intelligente/etc. que je n'ai pas encore vu).