# ── 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