Sicherheit
API-Sicherheitsnachweis
Dokumentation der Sicherheitsarchitektur aller öffentlichen API-Endpoints der Resilience Platform. Transparent, prüfbar und DORA-konform.
1. API-Endpoints
| Methode | Pfad | Auth | Rate Limit | Beschreibung |
|---|---|---|---|---|
| GET | /api/health | Keine | 60/min | Health Check (DB + Cache). Gibt JSON mit PHP-Version, Laravel-Version, Environment, DB-Status, Cache-Status zurück. |
| GET | /api/ping | Keine | 60/min | Minimaler Uptime-Check. Gibt "pong" als text/plain zurück. |
| GET | /exports/* | Keine | 60/min | 17 Export-Endpoints (CSV, JSON, ICS, PDF) mit SHA-256-Integritätsheader. Keine personenbezogenen Daten. |
| GET | /exports/registry | Keine | 60/min | Artifact Registry: JSON-Array aller generierten Exporte mit Metadaten und SHA-256. |
| GET | /sitemap.xml | Keine | 60/min | Dynamisch generierte XML-Sitemap mit 260+ URLs. |
| GET | /api/errors | Token | 30/min | Error-Report-API für Paperclip-Monitoring. Nur mit gültigem API-Token zugänglich. |
2. Security Headers
Jede HTTP-Response enthält folgende Security-Header:
| Header | Wert | Zweck |
|---|---|---|
| X-Artifact-SHA256 | SHA-256-Hash des Export-Inhalts | Ermöglicht Integritätsprüfung der heruntergeladenen Datei. Vergleich mit eigenem SHA-256-Hash. |
| X-Content-Type-Options | nosniff | Verhindert MIME-Type-Sniffing durch Browser (OWASP-Empfehlung). |
| X-Frame-Options | SAMEORIGIN | Verhindert Clickjacking durch Einbettung in fremde Frames. |
| Strict-Transport-Security | max-age=31536000; includeSubDomains | HSTS für 12 Monate mit Subdomains. Erzwingt HTTPS. |
| Content-Security-Policy | default-src 'self'; script-src 'self' 'nonce-{random}' 'strict-dynamic'; style-src 'self' 'unsafe-inline' | CSP mit Nonce-basiertem Script-Hashing. Keine externen Scripts. |
| Referrer-Policy | strict-origin-when-cross-origin | Sendet Referrer nur bei same-origin. Begrenzt Datenleckage. |
| Permissions-Policy | camera=(), microphone=(), geolocation=(), interest-cohort=() | Deaktiviert alle Browser-Features, die nicht benötigt werden. |
3. Sicherheitskontrollen
Authentifizierung
Öffentliche APIs benötigen keine Authentifizierung (Health, Ping, Exports, Sitemap). Error-API ist Token-geschützt. Admin- und App-Routen via Laravel Fortify mit 2FA.
Rate Limiting
Globale Ratenbegrenzung auf 60 Requests/Minute pro IP für öffentliche Endpoints. Error-API: 30/Minute.
Input-Validierung
Alle Inputs werden durch Laravel Middleware validiert (TrimStrings, ConvertEmptyStringsToNull, ValidatePostSize, ValidatePathEncoding).
OWASP Upload Security
OwaspUploadSecurity Middleware: Extension-Whitelist, MIME-Detection via finfo, Double-Extension-Rejection, Null-Byte-Detection, 10MB-Limit, Auth-only.
Integrität
Alle Exporte erhalten X-Artifact-SHA256-Header. Artifact Registry speichert SHA-256, Version und Timestamp jedes Exports.
Datenminimierung
Keine personenbezogenen Daten in Exporten. Keine Secrets in Responses. Keine Stacktraces in Produktion (APP_DEBUG=false).
Transportverschlüsselung
TLS 1.3. HSTS für 12 Monate. SMTP für Newsletter via Plesk mit DKIM-Signatur (psa12.webhoster.ag:587, TLS).
CSP & Security Headers
Content-Security-Policy mit Nonce + strict-dynamic. X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy.
Fehlerbehandlung
Branded 404/500/503 Error Pages ohne Stacktraces. Strukturierte Fehlerprotokollierung via Paperclip Error Monitor.
Logging & Monitoring
StructuredErrorHandler für JSON-Fehlerprotokollierung. /api/health für externes Monitoring. Paperclip Health Guardian Routine (alle 30 Min.).
4. Integritätsprüfung
Jeder Export-Download enthält einen X-Artifact-SHA256-Header. Der SHA-256-Hash kann zur Integritätsprüfung verwendet werden:
# Download und Hash-Vergleich
curl -sI https://resilience.amartens.com/exports/measures/csv | grep X-Artifact-SHA256
# X-Artifact-SHA256: cc1f0c2ab22aa24c467ce85234afefb3bb8336db99a98a6edc03a4e006ae4a06
curl -s https://resilience.amartens.com/exports/measures/csv | sha256sum
# cc1f0c2ab22aa24c467ce85234afefb3bb8336db99a98a6edc03a4e006ae4a06 -
Die Artifact Registry (/exports/registry) speichert zusätzlich Version, Timestamp und Dateigröße jedes Exports für Audit-Zwecke.
5. Regelkonformität
DORA
Art. 8, 9, 24, 25, 28
OWASP
ASVS, API Top 10, Upload Security
ISO 27001
A.8.1, A.8.2, A.8.5, A.8.20, A.5.33
6. Verknüpfte Module
7. OWASP Top 10 Mapping — 100% (33/33)
33/33
OWASP Checks
10/10
Kategorien
100%
Compliance
+5
Verbessert seit 06.06.
Verbesserungen seit letztem Audit: XSS-Schutz (+Pre-Commit-Hook), Rate-Limiting (API-Key-basiert), Logging/Monitoring (Auto-Heal, Dependency Audit, Vulnerability Scan), Sensitive Data Exposure (Audit-Trail).
OWASP Top 10 — Detail
ISO 27001:2022 Annex A — Erfüllte Controls
TLS-Zertifikat
✅ TLS 1.3 aktiv · Zertifikat gültig bis 30.07.2026 (52 Tage) · Aussteller: Let's Encrypt