107 lines
3.4 KiB
ApacheConf

# FavMasToKey - Configuration Apache
# Activer le moteur de réécriture
RewriteEngine On
# Forcer HTTPS (à activer en production en supprimant le commentaire)
# RewriteCond %{HTTPS} !=on
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Protéger le répertoire includes
<IfModule mod_rewrite.c>
RewriteRule ^includes/ - [F,L]
</IfModule>
# Bloquer l'accès aux fichiers sensibles
<FilesMatch "^(config\.php|functions\.php|app_data\.php)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Protéger .htaccess et tout fichier commençant par un point
<FilesMatch "^\.">
Order Allow,Deny
Deny from all
</FilesMatch>
# Désactiver l'accès aux anciens fichiers d'authentification (qui n'existent plus)
<FilesMatch "^(oauth\.php|callback\.php)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Désactiver l'affichage du contenu des répertoires
Options -Indexes
# Limiter les méthodes HTTP autorisées
<LimitExcept GET POST HEAD>
Order Allow,Deny
Deny from all
</LimitExcept>
# Headers de sécurité
<IfModule mod_headers.c>
# Protection contre le clickjacking
Header always set X-Frame-Options "SAMEORIGIN"
# Protection XSS
Header always set X-XSS-Protection "1; mode=block"
# Prévention MIME sniffing
Header always set X-Content-Type-Options "nosniff"
# Referrer Policy
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Content Security Policy - Ajusté pour les ressources externes utilisées
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' https://cdn.jsdelivr.net; img-src 'self' data:; font-src 'self' https://cdn.jsdelivr.net; connect-src 'self'"
# Désactiver la détection automatique du cache
Header unset ETag
FileETag None
# Mise en cache des ressources statiques
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# En production, activer HSTS (HTTP Strict Transport Security)
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
</IfModule>
# Configuration PHP
<IfModule mod_php.c>
# Masquer la version de PHP et autres informations
php_flag expose_php Off
# Désactiver l'affichage des erreurs en production (à décommenter en production)
# php_flag display_errors Off
# php_flag display_startup_errors Off
# php_value error_reporting 0
# Limiter le temps d'exécution des scripts
php_value max_execution_time 120
# Limiter la taille des téléchargements
php_value upload_max_filesize 10M
php_value post_max_size 10M
# Sécurité des sessions
php_value session.cookie_httponly 1
php_value session.use_only_cookies 1
php_value session.cookie_samesite "Lax"
# Utiliser des cookies sécurisés en production (à décommenter en production)
# php_value session.cookie_secure 1
</IfModule>
# Compresser les fichiers texte pour réduire la taille de transfert
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
# Protection contre les scans de vulnérabilités communes
RedirectMatch 404 (?i)\.php\.suspected
RedirectMatch 404 (?i)wp-login\.php
RedirectMatch 404 (?i)wp-admin
RedirectMatch 404 (?i)xmlrpc\.php