From 329c6a50694b468fce4fa0916784481230c5e310 Mon Sep 17 00:00:00 2001 From: "Elias F." Date: Wed, 12 Nov 2025 08:52:52 +0100 Subject: [PATCH] Re-pasted README --- README.md | 98 +++++++++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 841d7d4..ff193af 100644 --- a/README.md +++ b/README.md @@ -36,34 +36,34 @@ Hinweis: Nicht in Produktionsumgebungen offen stehen lassen – sensibel für In Erkläre die jeweilige Funktion folgender PHP.ini-Einstellungen: -- PHP-Fehler ausgeben -- Speichernutzung und Laufzeit deiner Skripte limitieren -- allow_url_fopen = off +- PHP-Fehler ausgeben +- Speichernutzung und Laufzeit deiner Skripte limitieren +- allow_url_fopen = off - session.auto_start = off --- ## Lösung Aufgabe 2 -**Fehlerausgabe** -- `display_errors` (bool): Steuert, ob Fehler direkt im Browser/CLI ausgegeben werden. In Entwicklung: `On`, Produktion: `Off`. -- `error_reporting` (int): Legt fest, welche Fehlertypen gemeldet werden (z. B. `E_ALL`). -- `log_errors` (bool): Fehler ins Log schreiben statt anzeigen – wichtig für Sicherheit. +**Fehlerausgabe** +- `display_errors` (bool): Steuert, ob Fehler direkt im Browser/CLI ausgegeben werden. In Entwicklung: `On`, Produktion: `Off`. +- `error_reporting` (int): Legt fest, welche Fehlertypen gemeldet werden (z. B. `E_ALL`). +- `log_errors` (bool): Fehler ins Log schreiben statt anzeigen – wichtig für Sicherheit. -**Speicher- und Laufzeitbegrenzung** -- `memory_limit` (z. B. `256M`): Maximale Menge RAM, die ein Skript nutzen darf. Verhindert Abstürze durch Überlastung. -- `max_execution_time` (Sekunden): Maximale Laufzeit eines Skripts (Standard oft 30). Schutz gegen Endlosschleifen / Hänger. -- `max_input_time`: Zeitlimit für das Parsen von Input-Daten (POST/GET). +**Speicher- und Laufzeitbegrenzung** +- `memory_limit` (z. B. `256M`): Maximale Menge RAM, die ein Skript nutzen darf. Verhindert Abstürze durch Überlastung. +- `max_execution_time` (Sekunden): Maximale Laufzeit eines Skripts (Standard oft 30). Schutz gegen Endlosschleifen / Hänger. +- `max_input_time`: Zeitlimit für das Parsen von Input-Daten (POST/GET). -**Remote-File-Handling** -- `allow_url_fopen`: Erlaubt Dateifunktionen (`file_get_contents`, `fopen`) auf URL-Wrapper (http/https). `off` erhöht Sicherheit (verhindert SSRF / unerwartete externe Zugriffe). Bei Bedarf besser cURL mit Validierung nutzen. +**Remote-File-Handling** +- `allow_url_fopen`: Erlaubt Dateifunktionen (`file_get_contents`, `fopen`) auf URL-Wrapper (http/https). `off` erhöht Sicherheit (verhindert SSRF / unerwartete externe Zugriffe). Bei Bedarf besser cURL mit Validierung nutzen. -**Session-Verhalten** -- `session.auto_start`: Wenn `On`, startet PHP automatisch eine Session bei jedem Request – unflexibel, kann Performance und Ressourcen belasten. Mit `Off` startet man Sessions gezielt (`session_start();`). +**Session-Verhalten** +- `session.auto_start`: Wenn `On`, startet PHP automatisch eine Session bei jedem Request – unflexibel, kann Performance und Ressourcen belasten. Mit `Off` startet man Sessions gezielt (`session_start();`). -**Sicherheits-Implikationen (kurz):** -- Zu aggressive Fehleranzeige in Produktion = Informationsleck. -- Fehlende Limits = Risiko von Ressourcenerschöpfung (DoS). -- `allow_url_fopen` ungeprüft = Angriffsfläche für SSRF / Remote Inclusion. +**Sicherheits-Implikationen (kurz):** +- Zu aggressive Fehleranzeige in Produktion = Informationsleck. +- Fehlende Limits = Risiko von Ressourcenerschöpfung (DoS). +- `allow_url_fopen` ungeprüft = Angriffsfläche für SSRF / Remote Inclusion. - Unkontrollierte Sessions = Tracking-/Sicherheitsprobleme. --- @@ -112,10 +112,10 @@ Vollständiger Code siehe `test.php`. --- ## 🌐 Client-Server & HTTP-Zyklus -**HTTP Cycle:** -1. Request: Browser → Server (Methoden: GET, POST, PUT, DELETE, PATCH; Headers; Body) -2. Processing: Routing, Business-Logik, DB-Operationen -3. Response: Status-Codes (2xx, 3xx, 4xx, 5xx), Headers, Body (HTML/JSON/Assets) +**HTTP Cycle:** +1. Request: Browser → Server (Methoden: GET, POST, PUT, DELETE, PATCH; Headers; Body) +2. Processing: Routing, Business-Logik, DB-Operationen +3. Response: Status-Codes (2xx, 3xx, 4xx, 5xx), Headers, Body (HTML/JSON/Assets) **Netzwerkschichten (vereinfacht):** ``` @@ -132,7 +132,7 @@ Link: Ethernet, WiFi, 5G ## 🛠️ Entwicklungsumgebung (Stack-Beispiele) Runtime: Node.js 18+, PHP 8.1+, Python 3.11+, Docker / Podman DB: PostgreSQL 15+, MySQL 8+ / MariaDB, Redis, MongoDB -Tools: IDE (VS Code, PhpStorm), Docker, Git, Linter, Test-Frameworks +Tools: IDE (VS Code, PhpStorm), Docker, Git, Linter, Test-Frameworks **Docker Compose Beispiel:** ```yaml @@ -154,14 +154,14 @@ Lokale Installation (macOS/Linux): `brew/apt install nginx postgresql redis` --- ## ⚠️ Sicherheitsrisiken (Auswahl) -1. Phishing – Nutzer werden auf gefälschte Seiten gelockt (Schutz: HTTPS, Schulung, DMARC) -2. Datendiebstahl – Unautorisierter Zugriff (Schutz: Zugriffskontrolle, Verschlüsselung) -3. SQL Injection – Manipulierte Eingaben verändern Queries (Schutz: Prepared Statements) -4. XSS – Eingebettete Skripte (Schutz: Output Encoding, CSP) -5. Session Hijacking – Session-Diebstahl (Schutz: Secure/HttpOnly Cookies, Regeneration) -6. DoS/DDoS – Überlastung (Schutz: Rate Limits, WAF, Caching) -7. CSRF – Ungewollte Aktionen (Schutz: CSRF-Token, SameSite Cookies) -8. File Inclusion (LFI/RFI) – Lokale/Remote Ausführung von Dateien (Schutz: Whitelists, `allow_url_fopen=off`, Pfadvalidierung) +1. Phishing – Nutzer werden auf gefälschte Seiten gelockt (Schutz: HTTPS, Schulung, DMARC) +2. Datendiebstahl – Unautorisierter Zugriff (Schutz: Zugriffskontrolle, Verschlüsselung) +3. SQL Injection – Manipulierte Eingaben verändern Queries (Schutz: Prepared Statements) +4. XSS – Eingebettete Skripte (Schutz: Output Encoding, CSP) +5. Session Hijacking – Session-Diebstahl (Schutz: Secure/HttpOnly Cookies, Regeneration) +6. DoS/DDoS – Überlastung (Schutz: Rate Limits, WAF, Caching) +7. CSRF – Ungewollte Aktionen (Schutz: CSRF-Token, SameSite Cookies) +8. File Inclusion (LFI/RFI) – Lokale/Remote Ausführung von Dateien (Schutz: Whitelists, `allow_url_fopen=off`, Pfadvalidierung) ### Weitere Angriffsvektoren / Exploits - Remote Code Execution (RCE) durch unsichere eval/include oder veraltete Bibliotheken @@ -185,7 +185,7 @@ Lokale Installation (macOS/Linux): `brew/apt install nginx postgresql redis` **Headers:** CSP, X-Frame-Options, X-Content-Type-Options, HSTS, Referrer-Policy **Monitoring:** Logging, Audit Trails, IDS/WAF, SIEM **Updates:** Regelmäßige Patches, Dependency-Scans (Composer Audit) -**Backup & Recovery:** Getestete Wiederherstellungsprozesse, Offline-Backups +**Backup & Recovery:** Getestete Wiederherstellungsprozesse, Offline-Backups Beispiel Prepared Statement (PDO): ```php @@ -200,26 +200,26 @@ $user = $stmt->fetch(PDO::FETCH_ASSOC); // Holt Datensatz als Array --- ## ✅ Best Practices (Kurzliste) -- Eingaben validieren & sanitisieren -- Prepared Statements überall für DB-Zugriffe -- HTTPS erzwingen / HSTS aktivieren -- Starke Authentifizierung (MFA, Passwortrichtlinien) -- Sicherheitsheader setzen (CSP, X-Frame-Options, etc.) -- Software & Dependencies aktuell halten -- Logging + aktives Monitoring (Anomalien) -- Least Privilege & strikte Rollen -- Regelmäßige Penetrationstests & Code Reviews -- Geplante Backups & Wiederherstellung testen +- Eingaben validieren & sanitisieren +- Prepared Statements überall für DB-Zugriffe +- HTTPS erzwingen / HSTS aktivieren +- Starke Authentifizierung (MFA, Passwortrichtlinien) +- Sicherheitsheader setzen (CSP, X-Frame-Options, etc.) +- Software & Dependencies aktuell halten +- Logging + aktives Monitoring (Anomalien) +- Least Privilege & strikte Rollen +- Regelmäßige Penetrationstests & Code Reviews +- Geplante Backups & Wiederherstellung testen --- ## 📚 Ressourcen -- OWASP Top 10: https://owasp.org/www-project-top-ten/ -- PHP Security: https://www.php.net/manual/en/security.php -- Mozilla Web Security Guidelines: https://infosec.mozilla.org/guidelines/web_security -- CWE: https://cwe.mitre.org/ -- PHP The Right Way: https://phptherightway.com/ -- Composer Security Advisories: https://github.com/FriendsOfPHP/security-advisories +- OWASP Top 10: https://owasp.org/www-project-top-ten/ +- PHP Security: https://www.php.net/manual/en/security.php +- Mozilla Web Security Guidelines: https://infosec.mozilla.org/guidelines/web_security +- CWE: https://cwe.mitre.org/ +- PHP The Right Way: https://phptherightway.com/ +- Composer Security Advisories: https://github.com/FriendsOfPHP/security-advisories ---