Files
elyes/cms_simplifie/.htaccess
2025-11-03 00:39:36 +01:00

64 lines
2.0 KiB
ApacheConf

# ===================================================================
# Sécurité de base
# ===================================================================
ServerSignature Off
Options -Indexes
FileETag None
AddDefaultCharset UTF-8
# Bloque fichiers cachés (.env, .git, etc.) et configs/dev
<FilesMatch "^(\.|composer\.(json|lock)|package(-lock)?\.json|Dockerfile|docker-compose\.yml|.*\.env|.*\.sql|.*\.md)$">
Require all denied
</FilesMatch>
# Forcer une page 404 propre
ErrorDocument 404 /page404.php
# Empêche l'accès direct aux dossiers non publics
RewriteEngine On
RewriteRule ^inc/ - [F,L,NC]
RewriteRule ^sql/ - [F,L,NC]
# Méthodes HTTP autorisées (GET/POST/HEAD)
<LimitExcept GET POST HEAD>
Require all denied
</LimitExcept>
<IfModule mod_headers.c>
# Empêche le framing (clickjacking)
Header always set X-Frame-Options "SAMEORIGIN"
# Empêche le MIME sniffing
Header always set X-Content-Type-Options "nosniff"
# Politique du Referer
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# Permissions API (désactive tout par défaut)
Header always set Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=(), interest-cohort=()"
# Politique de ressources cross-origin
Header always set Cross-Origin-Resource-Policy "same-origin"
Header always set Cross-Origin-Opener-Policy "same-origin"
# Content Security Policy (CSP)
# - autorise CSS en ligne
# - pas d'exec JS hormis le fichier local .js (je n'ai pas utilisé de code javascript donc le site ne devrait jamais utiliser de code js )
Header always set Content-Security-Policy "default-src 'self'; base-uri 'self'; frame-ancestors 'self'; object-src 'none'; img-src 'self' data:; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self'; connect-src 'self'"
</IfModule>
# Redirection sécurisé: racine -> /public
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ public/ [R=302,L]