# ── Bot & Scanner Schutz ──────────────────────────────────────────────────
# Bekannte böswillige Bots blockieren
RewriteCond %{HTTP_USER_AGENT} (masscan|nikto|sqlmap|nmap|zgrab|python-requests/2\.2[0-9]|scrapy|dirbuster|gobuster|nuclei) [NC]
RewriteRule ^ - [F,L]
# Leere User-Agents blockieren
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteRule ^ - [F,L]
# Direkt-IP-Zugriff ohne Host verhindern (optional)
# RewriteCond %{HTTP_HOST} !^yourdomain\.com$
# RewriteRule ^ - [F,L]
# Clickjacking-Schutz
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
# Schützt interne Verzeichnisse vor direktem Web-Zugriff.
# Funktioniert mit Apache (mod_rewrite/mod_authz aktiv). Bei nginx siehe README.md.
RewriteEngine On
# Den Header "Authorization" (Anmeldung der Windows- und Android-App) an PHP weiterreichen. Ohne diese Regeln entfernen Apache mit
# PHP-FPM/FastCGI (z. B. Plesk) ihn, und die Apps melden "Ein gültiges Bearer-Token ist erforderlich".
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
= 2.4.13>
CGIPassAuth On
RewriteCond %{REQUEST_URI} ^/(includes|config|database|cron)/ [NC]
RewriteRule ^ - [F,L]
# Entwicklungs- und Hilfsordner sowie interne Dateien gehören nicht ins Web (Tests, Werkzeuge, Quelltexte der Apps, Paketquellen)
RewriteCond %{REQUEST_URI} ^/(tests|tools|docs|desktop|mobile|theme-packages|vorschaubilder|plugin-webseite|\.git|\.gitea|\.github|backups|plugins/[^/]+/(lib|migrations))(/|$) [NC]
RewriteRule ^ - [F,L]
RewriteCond %{REQUEST_URI} \.(sqlite3?|db|sql|log|bak|old|orig|swp|md|sh|bat|ps1|pem|key|env|ini|lock|dist)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/(offen\.txt|install\.sh|install_windows\.bat|composer\.(json|lock)|package(-lock)?\.json)$ [NC]
RewriteRule ^ - [F,L]
# Übrig gebliebene alte Ordner eines Updates (…alt-JJJJMMTT-HHMMSS) nicht ausliefern
RewriteCond %{REQUEST_URI} \.alt-[0-9]{8}-[0-9]{6}(/|$) [NC]
RewriteRule ^ - [F,L]
# version.php nur intern zugänglich
RewriteCond %{REQUEST_URI} ^/version\.php$ [NC]
RewriteRule ^ - [F,L]
php_flag display_errors off
Options -Indexes