Re-pasted README
This commit is contained in:
98
README.md
98
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:
|
Erkläre die jeweilige Funktion folgender PHP.ini-Einstellungen:
|
||||||
|
|
||||||
- PHP-Fehler ausgeben
|
- PHP-Fehler ausgeben
|
||||||
- Speichernutzung und Laufzeit deiner Skripte limitieren
|
- Speichernutzung und Laufzeit deiner Skripte limitieren
|
||||||
- allow_url_fopen = off
|
- allow_url_fopen = off
|
||||||
- session.auto_start = off
|
- session.auto_start = off
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Lösung Aufgabe 2
|
## Lösung Aufgabe 2
|
||||||
**Fehlerausgabe**
|
**Fehlerausgabe**
|
||||||
- `display_errors` (bool): Steuert, ob Fehler direkt im Browser/CLI ausgegeben werden. In Entwicklung: `On`, Produktion: `Off`.
|
- `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`).
|
- `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.
|
- `log_errors` (bool): Fehler ins Log schreiben statt anzeigen – wichtig für Sicherheit.
|
||||||
|
|
||||||
**Speicher- und Laufzeitbegrenzung**
|
**Speicher- und Laufzeitbegrenzung**
|
||||||
- `memory_limit` (z. B. `256M`): Maximale Menge RAM, die ein Skript nutzen darf. Verhindert Abstürze durch Überlastung.
|
- `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_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).
|
- `max_input_time`: Zeitlimit für das Parsen von Input-Daten (POST/GET).
|
||||||
|
|
||||||
**Remote-File-Handling**
|
**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.
|
- `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-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.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):**
|
**Sicherheits-Implikationen (kurz):**
|
||||||
- Zu aggressive Fehleranzeige in Produktion = Informationsleck.
|
- Zu aggressive Fehleranzeige in Produktion = Informationsleck.
|
||||||
- Fehlende Limits = Risiko von Ressourcenerschöpfung (DoS).
|
- Fehlende Limits = Risiko von Ressourcenerschöpfung (DoS).
|
||||||
- `allow_url_fopen` ungeprüft = Angriffsfläche für SSRF / Remote Inclusion.
|
- `allow_url_fopen` ungeprüft = Angriffsfläche für SSRF / Remote Inclusion.
|
||||||
- Unkontrollierte Sessions = Tracking-/Sicherheitsprobleme.
|
- Unkontrollierte Sessions = Tracking-/Sicherheitsprobleme.
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -112,10 +112,10 @@ Vollständiger Code siehe `test.php`.
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 🌐 Client-Server & HTTP-Zyklus
|
## 🌐 Client-Server & HTTP-Zyklus
|
||||||
**HTTP Cycle:**
|
**HTTP Cycle:**
|
||||||
1. Request: Browser → Server (Methoden: GET, POST, PUT, DELETE, PATCH; Headers; Body)
|
1. Request: Browser → Server (Methoden: GET, POST, PUT, DELETE, PATCH; Headers; Body)
|
||||||
2. Processing: Routing, Business-Logik, DB-Operationen
|
2. Processing: Routing, Business-Logik, DB-Operationen
|
||||||
3. Response: Status-Codes (2xx, 3xx, 4xx, 5xx), Headers, Body (HTML/JSON/Assets)
|
3. Response: Status-Codes (2xx, 3xx, 4xx, 5xx), Headers, Body (HTML/JSON/Assets)
|
||||||
|
|
||||||
**Netzwerkschichten (vereinfacht):**
|
**Netzwerkschichten (vereinfacht):**
|
||||||
```
|
```
|
||||||
@@ -132,7 +132,7 @@ Link: Ethernet, WiFi, 5G
|
|||||||
## 🛠️ Entwicklungsumgebung (Stack-Beispiele)
|
## 🛠️ Entwicklungsumgebung (Stack-Beispiele)
|
||||||
Runtime: Node.js 18+, PHP 8.1+, Python 3.11+, Docker / Podman
|
Runtime: Node.js 18+, PHP 8.1+, Python 3.11+, Docker / Podman
|
||||||
DB: PostgreSQL 15+, MySQL 8+ / MariaDB, Redis, MongoDB
|
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:**
|
**Docker Compose Beispiel:**
|
||||||
```yaml
|
```yaml
|
||||||
@@ -154,14 +154,14 @@ Lokale Installation (macOS/Linux): `brew/apt install nginx postgresql redis`
|
|||||||
---
|
---
|
||||||
|
|
||||||
## ⚠️ Sicherheitsrisiken (Auswahl)
|
## ⚠️ Sicherheitsrisiken (Auswahl)
|
||||||
1. Phishing – Nutzer werden auf gefälschte Seiten gelockt (Schutz: HTTPS, Schulung, DMARC)
|
1. Phishing – Nutzer werden auf gefälschte Seiten gelockt (Schutz: HTTPS, Schulung, DMARC)
|
||||||
2. Datendiebstahl – Unautorisierter Zugriff (Schutz: Zugriffskontrolle, Verschlüsselung)
|
2. Datendiebstahl – Unautorisierter Zugriff (Schutz: Zugriffskontrolle, Verschlüsselung)
|
||||||
3. SQL Injection – Manipulierte Eingaben verändern Queries (Schutz: Prepared Statements)
|
3. SQL Injection – Manipulierte Eingaben verändern Queries (Schutz: Prepared Statements)
|
||||||
4. XSS – Eingebettete Skripte (Schutz: Output Encoding, CSP)
|
4. XSS – Eingebettete Skripte (Schutz: Output Encoding, CSP)
|
||||||
5. Session Hijacking – Session-Diebstahl (Schutz: Secure/HttpOnly Cookies, Regeneration)
|
5. Session Hijacking – Session-Diebstahl (Schutz: Secure/HttpOnly Cookies, Regeneration)
|
||||||
6. DoS/DDoS – Überlastung (Schutz: Rate Limits, WAF, Caching)
|
6. DoS/DDoS – Überlastung (Schutz: Rate Limits, WAF, Caching)
|
||||||
7. CSRF – Ungewollte Aktionen (Schutz: CSRF-Token, SameSite Cookies)
|
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)
|
8. File Inclusion (LFI/RFI) – Lokale/Remote Ausführung von Dateien (Schutz: Whitelists, `allow_url_fopen=off`, Pfadvalidierung)
|
||||||
|
|
||||||
### Weitere Angriffsvektoren / Exploits
|
### Weitere Angriffsvektoren / Exploits
|
||||||
- Remote Code Execution (RCE) durch unsichere eval/include oder veraltete Bibliotheken
|
- 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
|
**Headers:** CSP, X-Frame-Options, X-Content-Type-Options, HSTS, Referrer-Policy
|
||||||
**Monitoring:** Logging, Audit Trails, IDS/WAF, SIEM
|
**Monitoring:** Logging, Audit Trails, IDS/WAF, SIEM
|
||||||
**Updates:** Regelmäßige Patches, Dependency-Scans (Composer Audit)
|
**Updates:** Regelmäßige Patches, Dependency-Scans (Composer Audit)
|
||||||
**Backup & Recovery:** Getestete Wiederherstellungsprozesse, Offline-Backups
|
**Backup & Recovery:** Getestete Wiederherstellungsprozesse, Offline-Backups
|
||||||
|
|
||||||
Beispiel Prepared Statement (PDO):
|
Beispiel Prepared Statement (PDO):
|
||||||
```php
|
```php
|
||||||
@@ -200,26 +200,26 @@ $user = $stmt->fetch(PDO::FETCH_ASSOC); // Holt Datensatz als Array
|
|||||||
---
|
---
|
||||||
|
|
||||||
## ✅ Best Practices (Kurzliste)
|
## ✅ Best Practices (Kurzliste)
|
||||||
- Eingaben validieren & sanitisieren
|
- Eingaben validieren & sanitisieren
|
||||||
- Prepared Statements überall für DB-Zugriffe
|
- Prepared Statements überall für DB-Zugriffe
|
||||||
- HTTPS erzwingen / HSTS aktivieren
|
- HTTPS erzwingen / HSTS aktivieren
|
||||||
- Starke Authentifizierung (MFA, Passwortrichtlinien)
|
- Starke Authentifizierung (MFA, Passwortrichtlinien)
|
||||||
- Sicherheitsheader setzen (CSP, X-Frame-Options, etc.)
|
- Sicherheitsheader setzen (CSP, X-Frame-Options, etc.)
|
||||||
- Software & Dependencies aktuell halten
|
- Software & Dependencies aktuell halten
|
||||||
- Logging + aktives Monitoring (Anomalien)
|
- Logging + aktives Monitoring (Anomalien)
|
||||||
- Least Privilege & strikte Rollen
|
- Least Privilege & strikte Rollen
|
||||||
- Regelmäßige Penetrationstests & Code Reviews
|
- Regelmäßige Penetrationstests & Code Reviews
|
||||||
- Geplante Backups & Wiederherstellung testen
|
- Geplante Backups & Wiederherstellung testen
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📚 Ressourcen
|
## 📚 Ressourcen
|
||||||
- OWASP Top 10: https://owasp.org/www-project-top-ten/
|
- OWASP Top 10: https://owasp.org/www-project-top-ten/
|
||||||
- PHP Security: https://www.php.net/manual/en/security.php
|
- PHP Security: https://www.php.net/manual/en/security.php
|
||||||
- Mozilla Web Security Guidelines: https://infosec.mozilla.org/guidelines/web_security
|
- Mozilla Web Security Guidelines: https://infosec.mozilla.org/guidelines/web_security
|
||||||
- CWE: https://cwe.mitre.org/
|
- CWE: https://cwe.mitre.org/
|
||||||
- PHP The Right Way: https://phptherightway.com/
|
- PHP The Right Way: https://phptherightway.com/
|
||||||
- Composer Security Advisories: https://github.com/FriendsOfPHP/security-advisories
|
- Composer Security Advisories: https://github.com/FriendsOfPHP/security-advisories
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user