Dieses Projekt ist ein Bildungsprojekt für einen Python-Einführungskurs. Wir unterstützen die aktuellste Version des Kursmaterials.
| Version | Unterstützt |
|---|---|
| latest | ✅ |
| < 1.0 | ❌ |
Die Sicherheit dieses Projekts nehmen wir ernst. Obwohl es sich um ein Bildungsprojekt handelt, möchten wir sicherstellen, dass keine schädlichen Inhalte oder unsicheren Praktiken vermittelt werden.
Bitte melden Sie Sicherheitslücken NICHT über öffentliche GitHub Issues.
Stattdessen senden Sie bitte eine E-Mail an:
E-Mail: daniel.senften@talent-factory.ch
Betreff: [SECURITY] pyt-intro: Kurze Beschreibung
Bitte geben Sie so viele der folgenden Informationen wie möglich an:
- Art des Problems (z.B. unsichere Code-Beispiele, Injection-Schwachstellen in Übungen)
- Vollständige Pfade zu den betroffenen Dateien
- Ort des betroffenen Codes (Tag/Branch/Commit oder direkte URL)
- Schritt-für-Schritt-Anleitung zur Reproduktion des Problems
- Proof-of-Concept oder Exploit-Code (falls möglich)
- Auswirkungen des Problems, einschließlich wie ein Angreifer es ausnutzen könnte
- Bestätigung: Sie erhalten innerhalb von 48 Stunden eine Bestätigung
- Bewertung: Wir bewerten die Schwere und Auswirkung des Problems
- Behebung: Wir arbeiten an einem Fix und halten Sie auf dem Laufenden
- Veröffentlichung: Nach der Behebung veröffentlichen wir ein Update
- Anerkennung: Mit Ihrer Erlaubnis werden Sie in den Release Notes erwähnt
-
API-Schlüssel und Secrets
- Niemals API-Schlüssel in Code committen
- Verwenden Sie
.envDateien (bereits in.gitignore) - Nutzen Sie Umgebungsvariablen
-
Dateioperationen
- Validieren Sie Benutzereingaben
- Verwenden Sie
with-Statements für Dateioperationen - Seien Sie vorsichtig mit Dateipfaden
-
Externe Pakete
- Installieren Sie nur vertrauenswürdige Pakete
- Überprüfen Sie Paket-Quellen
- Halten Sie Dependencies aktuell
-
Code-Ausführung
- Vermeiden Sie
eval()undexec()mit Benutzereingaben - Validieren Sie alle Eingaben
- Verwenden Sie sichere Alternativen
- Vermeiden Sie
# ❌ UNSICHER: eval() mit Benutzereingabe
user_input = input("Geben Sie eine Berechnung ein: ")
result = eval(user_input) # Ermöglicht Code-Injection!
# ❌ UNSICHER: Dateipfad ohne Validierung
filename = input("Dateiname: ")
with open(filename, 'r') as f: # Path Traversal möglich!
content = f.read()
# ❌ UNSICHER: API-Schlüssel im Code
api_key = "sk-1234567890abcdef" # Niemals hardcoden!# ✅ SICHER: ast.literal_eval() für sichere Auswertung
import ast
user_input = input("Geben Sie eine Zahl ein: ")
try:
number = ast.literal_eval(user_input)
except (ValueError, SyntaxError):
print("Ungültige Eingabe")
# ✅ SICHER: Pfad-Validierung
import os
from pathlib import Path
base_dir = Path("./data")
filename = input("Dateiname: ")
filepath = (base_dir / filename).resolve()
# Prüfen, ob Pfad innerhalb des erlaubten Verzeichnisses liegt
if base_dir.resolve() in filepath.parents:
with open(filepath, 'r') as f:
content = f.read()
else:
print("Ungültiger Dateipfad")
# ✅ SICHER: Umgebungsvariablen verwenden
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("API_KEY")Da dies ein Bildungsprojekt ist:
- Einige Übungen demonstrieren bewusst unsichere Praktiken zu Lernzwecken
- Diese sind klar als "Nicht für Produktion" gekennzeichnet
- Produktionsreife Alternativen werden immer bereitgestellt
Vor dem Einreichen eines Pull Requests:
- Keine Secrets oder API-Schlüssel im Code
- Keine unsicheren Praktiken ohne entsprechende Warnung
- Benutzereingaben werden validiert
- Dateipfade werden überprüft
- Dependencies sind aktuell und vertrauenswürdig
- Code-Beispiele folgen Best Practices
Für Sicherheitsfragen oder -bedenken:
- E-Mail: daniel.senften@talent-factory.ch
- Betreff:
[SECURITY] pyt-intro
Letzte Aktualisierung: 2025-01-16