IT-Sicherheit
Secure Coding – 10 Regeln um sichere Software zu bauen
Nico FreitagIT-Sicherheit
Du brauchst nicht ein Security-Experte zu sein um sichere Code zu schreiben. Du brauchst nur 10 einfache Regeln zu followen. Wir haben sie für dich zusammengefasst.
Regel 1: Inputs validieren, IMMER
Das ist Regel Nummer Eins für einen Grund: Das ist die häufigste Ursache von Vulnerabilities.
Jeder Input von außen – von einem User, einer API, einer Datei – ist potentiell malicious. Validiere ALLES:
```python
# FALSCH:
sql = f"SELECT * FROM users WHERE email = {user_input}"
# RICHTIG:
cursor.execute("SELECT * FROM users WHERE email = ?", (user_input,))
```
Das ist die Differenz zwischen einer sicheren Applikation und einer, die gehackt werden kann.
Regel 2: Prepared Statements für Datenbank-Queries
Never string concatenation für SQL. Immer prepared statements.
```python
# FALSCH – SQL Injection:
query = f"DELETE FROM users WHERE id = {user_id}"
# RICHTIG – Prepared Statement:
cursor.execute("DELETE FROM users WHERE id = ?", (user_id,))
```
Das schützt dich vor SQL Injection.
Regel 3: Escape Output
Wenn du daten anzeigst (in HTML, JSON, XML), escape sie:
```python
# FALSCH – XSS:
html = f"<h1>{user_input}</h1>"
# RICHTIG – Escaped:
from html import escape
html = f"<h1>{escape(user_input)}</h1>"
```
Das schützt dich vor XSS.
Regel 4: Strong Cryptography
Benutze moderne Crypto-Algorithmen. Nicht MD5, nicht SHA1 – benutze SHA256 oder besser.
Für Passwörter: Benutze bcrypt, scrypt, oder Argon2. Niemals plain text.
```python
# FALSCH:
password_hash = hashlib.md5(password).hexdigest()
# RICHTIG:
import bcrypt
password_hash = bcrypt.hashpw(password, bcrypt.gensalt())
```
Regel 5: Authentifizierung und Authorization
Immer Benutzer authentifizieren (wer bist du?). Und immer autorisieren (darfst du das?):
```python
# RICHTIG – mit Checks:
@require_login # Authentication
def delete_user(user_id):
current_user = get_current_user()
if current_user.id != user_id and not current_user.is_admin:
raise PermissionDenied() # Authorization
delete(user_id)
```
Regel 6: Fehler-Messages nicht zu informativ
Gebe nicht "User nicht gefunden" zurück wenn die Email nicht existiert. Das verrät Attackern welche Emails registriert sind.
```python
# FALSCH – Information Disclosure:
if user_not_found:
return "User nicht gefunden"
# RICHTIG – Generisch:
if user_not_found:
return "Email oder Passwort falsch"
```
Regel 7: Logging ohne sensitive Daten
Logge Security-relevante Events. Aber logge nicht Passwörter, Kreditkarten-Nummern, oder andere sensitive Daten.
```python
# FALSCH:
logger.info(f"User logged in: {username}, password: {password}")
# RICHTIG:
logger.info(f"User logged in: {username}")
```
Regel 8: Dependencies updaten
Alte Libraries haben bekannte Vulnerabilities. Update regelmäßig.
```bash
# Python:
pip install --upgrade -r requirements.txt
# Node.js:
npm audit fix
npm update
```
Regel 9: Secrets nicht im Code
Nie API Keys, Passwörter, oder Tokens im Code. Nutze Environment Variables:
```python
# FALSCH – Secret im Code:
db_password = "super_secret_123"
# RICHTIG – Umgebungsvariable:
db_password = os.getenv("DB_PASSWORD")
```
Regel 10: Security Review
Der beste sichere Code ist Code, der von jemandem anderem reviewed wurde. Peer Reviews sind essentiell.
```bash
# Git Workflow:
git branch feature/new-feature
# Develop feature
git push origin feature/new-feature
# Create Pull Request
# Peer review code
# Another developer approves
# Merge to main
```
Tools die helfen
- SAST (Static Analysis): SonarQube, Semgrep – Analyse deinen Code automatisch
- Dependency Checker: Snyk, OWASP Dependency Check – Finde vulnerable Dependencies
- Security Linter: Bandit (Python), ESLint mit Security Rules (JS)
- WAF: ModSecurity, CloudFlare – Blockiere Attacks auf HTTP-Level
Conclusion
Sichere Code zu schreiben ist nicht schwer. Es erfordert nur Discipline und Aufmerksamkeit auf diese 10 Regeln. Die meisten Vulnerabilities entstehen, weil Entwickler diese Basics ignorieren.
About the Author
Nico Freitag
Founder & Geschäftsführer
Nico Freitag is the founder and CEO of AXIS/PORT. With expertise in AI consulting, software development, and IT security, he helps businesses with their digital transformation.