Sichere Codierungspraktiken
graph TD
A[Sichere Codierungspraktiken] --> B[Eingabevalidierung]
A --> C[Sichere Konfiguration]
A --> D[Code-Review]
A --> E[Statische Analyse]
A --> F[Abhängigkeitsverwaltung]
1. Eingabevalidierung und -bereinigung
## Unsicheres Beispiel
def authenticate(username, password):
## Gefährlich: Direkte Stringverkettung
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
## Sicheres Beispiel
def secure_authenticate(username, password):
## Verwendung parametrisierter Abfragen
cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s",
(username, hash_password(password)))
2. Sichere Konfigurationsverwaltung
Umgebungsbasierte Konfiguration
## Ubuntu 22.04 - Beispiel für eine sichere Konfiguration
## Verwenden Sie .env-Dateien mit eingeschränkten Berechtigungen
touch .env
chmod 600 .env
## Inhalt der .env-Datei
DB_USERNAME=secure_user
DB_PASSWORD=complex_password_here
API_KEY=encrypted_key
Praxis |
Beschreibung |
Empfehlung |
Keine Hardcoding |
Vermeiden Sie eingebettete Anmeldeinformationen |
Verwenden Sie Umgebungsvariablen |
Verschlüsselung |
Schützen Sie sensible Daten |
Verwenden Sie starke Verschlüsselungsmethoden |
Minimale Offenlegung |
Begrenzen Sie die Sichtbarkeit von Anmeldeinformationen |
Verwenden Sie kurzlebige Token |
4. Automatische Sicherheits-Scans
## Installieren und ausführen von Sicherheits-Scan-Tools
sudo apt-get update
sudo apt-get install -y python3-pip
## Installieren von Sicherheits-Scan-Tools
pip3 install bandit safety
## Ausführen des Sicherheits-Scans im Projekt
bandit -r /path/to/your/project
safety check
5. Abhängigkeitsicherheit
Verwaltung von Risiken durch Drittanbieter
## Überprüfen und Aktualisieren von Abhängigkeiten
pip3 install pip-audit
## Überprüfen Sie Python-Abhängigkeiten
pip-audit
## Aktualisieren Sie gefährdete Pakete
pip3 list --outdated
pip3 install --upgrade package_name
6. Sichere Protokollierungsmethoden
## Beispiel für sichere Protokollierung
import logging
import re
def sanitize_log_message(message):
## Entfernen Sie sensible Informationen
return re.sub(r'(password|secret|token)=\S+', r'\1=***', message)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def log_authentication_attempt(username):
## Vermeiden Sie die Protokollierung sensibler Details
logger.info(f"Authentifizierungsversuch für Benutzer: {username}")
7. Code-Review-Checkliste
graph LR
A[Code-Review] --> B{Anmeldeinformationen-Prüfungen}
B --> |Erfolgreich| C[Genehmigen]
B --> |Nicht erfolgreich| D[Ablehnen]
Wichtige Überprüfungspunkte
- Keine hardcodierten Anmeldeinformationen
- Richtige Eingabevalidierung
- Sichere Fehlerbehandlung
- Prinzip des minimalen Zugriffs
Praktische Empfehlungen
Bei LabEx legen wir Wert auf:
- Kontinuierliche Sicherheitsausbildung
- Regelmäßige Sicherheitsaudits
- Automatische Erkennung von Sicherheitslücken
- Implementierung mehrschichtiger Sicherheitsstrategien