64 lines
2.0 KiB
ApacheConf
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]
|
|
|