### Sécurité
- [x] Permissions (fichiers : 644 - dossiers : 755) - [x] .htaccess
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
# =====================================================
|
||||
# Sillycone Village
|
||||
# Configuration Apache sécurisée pour site statique Hugo
|
||||
# =====================================================
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 1. Forcer HTTPS
|
||||
# -----------------------------------------------------
|
||||
|
||||
RewriteEngine On
|
||||
|
||||
RewriteCond %{HTTPS} !=on
|
||||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 2. Protection contre accès fichiers sensibles
|
||||
# -----------------------------------------------------
|
||||
|
||||
<FilesMatch "(^\.|\.git|\.env|\.bak|\.backup|\.old|\.sql|\.log|composer\.json|package\.json)">
|
||||
Require all denied
|
||||
</FilesMatch>
|
||||
|
||||
|
||||
# Bloquer l'accès au fichier .htaccess lui-même
|
||||
|
||||
<Files ".htaccess">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 3. Headers de sécurité HTTP
|
||||
# -----------------------------------------------------
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
|
||||
# Empêche le navigateur de deviner les types MIME
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
|
||||
|
||||
# Protection contre certaines attaques XSS anciennes
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
|
||||
|
||||
# Contrôle des informations envoyées aux sites externes
|
||||
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||
|
||||
|
||||
# Désactive les fonctionnalités navigateur inutiles
|
||||
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=(), usb=()"
|
||||
|
||||
|
||||
# Protection contre l'intégration dans une iframe externe
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
|
||||
|
||||
# Politique de sécurité du contenu
|
||||
# - pas de JS
|
||||
# - pas de CDN
|
||||
# - pas de police externe
|
||||
# - CSS local uniquement
|
||||
|
||||
Header always set Content-Security-Policy "default-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'"
|
||||
|
||||
</IfModule>
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 4. Compression
|
||||
# -----------------------------------------------------
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
|
||||
AddOutputFilterByType DEFLATE \
|
||||
text/html \
|
||||
text/plain \
|
||||
text/css \
|
||||
text/javascript \
|
||||
application/javascript \
|
||||
application/json \
|
||||
application/xml \
|
||||
image/svg+xml
|
||||
|
||||
</IfModule>
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 5. Cache navigateur
|
||||
# -----------------------------------------------------
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
|
||||
ExpiresActive On
|
||||
|
||||
# HTML : court pour faciliter les mises à jour
|
||||
ExpiresByType text/html "access plus 1 hour"
|
||||
|
||||
|
||||
# CSS
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
|
||||
|
||||
# SVG
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
|
||||
|
||||
# Fichiers statiques
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
|
||||
|
||||
</IfModule>
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 6. Désactiver le listing des répertoires
|
||||
# -----------------------------------------------------
|
||||
|
||||
Options -Indexes
|
||||
|
||||
|
||||
# -----------------------------------------------------
|
||||
# 7. Bloquer certains robots agressifs
|
||||
# -----------------------------------------------------
|
||||
|
||||
<IfModule mod_setenvif.c>
|
||||
|
||||
SetEnvIfNoCase User-Agent "MJ12bot" bad_bot
|
||||
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
|
||||
|
||||
<RequireAll>
|
||||
Require all granted
|
||||
Require not env bad_bot
|
||||
</RequireAll>
|
||||
|
||||
</IfModule>
|
||||
Reference in New Issue
Block a user