# 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