Sicherheitspraktiken in der Python-Entwicklung
Sicherheitspraktiken in der Python-Entwicklung
Ein praxisorientierter Leitfaden zum Schreiben sicherer, robuster und vertrauenswürdiger Python-Anwendungen
Inhaltsverzeichnis
Kapitel 1: Einführung in sichere Softwareentwicklung
- Was bedeutet „sichere Programmierung“?
- Sicherheitsziele: Vertraulichkeit, Integrität, Verfügbarkeit
- Bedrohungsmodelle für Python-Anwendungen
- OWASP Top 10 und relevante Sicherheitsrisiken
Kapitel 2: Sichere Handhabung von Benutzereingaben
- Input-Validierung und -Sanitierung
- Umgang mit eval(), exec() und input()
- Regex-Fallen und DoS durch fehlerhafte Prüfungen
- Mini-Projekt: Validierter Konfigurationsparser
Kapitel 3: Umgang mit sensiblen Daten
- Speicherung und Maskierung von Passwörtern
- Einsatz von Hashing (bcrypt, argon2, pbkdf2)
- Zugriff auf Secrets (z. B. API-Keys, Tokens)
- Mini-Projekt: Passwortspeicher mit sicherer Speicherung
Kapitel 4: Sichere Datei- und Pfadoperationen
- Verzeichnis-Traversal verhindern
- os.path, pathlib, tempfile korrekt verwenden
- Uploads, Downloads und Dateinamen absichern
- Mini-Projekt: Sicherer Datei-Uploader
Kapitel 5: Umgang mit Abhängigkeiten und Drittbibliotheken
- Sicherheitsrisiken durch Packages aus PyPI
- pip-audit, safety, bandit zur Überprüfung verwenden
- Abhängigkeiten einschränken (requirements.txt, constraints.txt)
- Mini-Projekt: Sicherheits-Scan für Python-Projekt einrichten
Kapitel 6: Sichere Kommunikation und Netzwerkzugriffe
- TLS/SSL mit requests und http.client
- Zertifikatsprüfung erzwingen
- Keine sensiblen Daten im Klartext übertragen
- Mini-Projekt: Sicherer API-Client mit Zertifikatsprüfung
Kapitel 7: Schutz vor Code-Injection und unsicheren Deserialisierungen
- Risiken von pickle, marshal und dynamischen Imports
- Sichere Alternativen wie json, yaml.safe_load
- Mini-Projekt: Sichere Konfigurationsladefunktion
Kapitel 8: Zugriffskontrolle und Berechtigungen
- Rollen, Rechte und Zugriffsebenen
- Zugriff auf Betriebssystem-Ressourcen beschränken
- Mini-Projekt: Rollenbasiertes CLI-Tool
Kapitel 9: Logging, Fehlerbehandlung und Informationssicherheit
- Logging ohne sensible Daten
- Custom Error Pages / Exceptions für Webanwendungen
- Stacktraces vermeiden, die interne Struktur verraten
- Mini-Projekt: Sichere Fehlerausgabe für REST-API
Kapitel 10: Sicherheitsbewusste Entwicklungsprozesse
- Sicherheits-Reviews und Code-Scans
- Integration in CI/CD-Pipelines
- Automatisierte Tests für sicherheitsrelevante Funktionen
- Tipps für Teams und Open-Source-Projekte
Anhang A: Sicherheits-Checkliste für Python-Projekte
- Validierung, Hashing, Secrets, Logging, TLS, Abhängigkeiten etc.
Anhang B: Nützliche Tools und Bibliotheken
- bandit, safety, pip-audit, pycryptodome, passlib, secure, pydantic
- Links zu Ressourcen und offiziellen Empfehlungen
Anhang C: Übungsaufgaben mit Lösungen
- Injektionsrisiken erkennen und verhindern
- Hashing und sichere Speicherung implementieren
- Fehlerhafte Pfadoperationen absichern
- Lösungen mit Kommentaren und Schritt-für-Schritt-Erklärung