Web Security

KAPITEL 09 · WEB-ENTWICKLUNG

Web Security

Sicherheit im Web ist kein Feature, sondern eine Grundvoraussetzung. Lernen Sie die wichtigsten Bedrohungen (OWASP Top 10), Angriffstechniken wie XSS und SQL Injection, sowie bewährte Schutzmaßnahmen für moderne Webanwendungen.

OWASP Top 10 XSS & SQLi HTTPS & CSP Security Tools

Inhaltsverzeichnis

Schnellübersicht

Auf dieser Seite lernen Sie alles über Web Security:

  • Definition: Was ist Web Security und warum ist sie wichtig?
  • OWASP Top 10: Die 10 häufigsten Sicherheitslücken (2021)
  • Angriffstypen: XSS, SQL Injection, CSRF, Auth-Bypass im Detail
  • Schutzmaßnahmen: HTTPS, CSP, Input Validation, Password Hashing
  • Security Headers: Wichtige HTTP-Header für Sicherheit
  • Tools: OWASP ZAP, Burp Suite, Nikto und mehr
  • Best Practices: Entwicklung, Betrieb, Audit, Incident Response
  • FAQ: Häufige Fragen zur Web Security

1. Was ist Web Security?

Definition

Web Security (Web-Sicherheit) umfasst alle Maßnahmen zum Schutz von Webanwendungen, Webservern und Webdiensten vor Angriffen, Missbrauch und unbefugtem Zugriff. Da Webanwendungen über das Internet öffentlich zugänglich sind, sind sie ein häufiges Ziel für Angreifer.

Web Security ist ein ganzheitlicher Ansatz, der folgende Bereiche umfasst: Sichere Programmierung (verhindern von Schwachstellen im Code), Sichere Konfiguration (Server, Frameworks, Datenbanken), Sichere Authentifizierung (Passwörter, MFA, Sessions) und Sichere Kommunikation (HTTPS, Verschlüsselung).

Warum ist Web Security so wichtig? Laut dem Verizon Data Breach Investigations Report sind Webanwendungen das häufigste Angriffsziel (ca. 43% aller Angriffe). Ein erfolgreicher Angriff kann zu Datenverlust, finanziellen Schäden, Reputationsschaden und rechtlichen Konsequenzen (DSGVO) führen.

Die drei Säulen der Web Security (CIA-Triade)

  • Confidentiality (Vertraulichkeit): Daten sind nur für autorisierte Personen zugänglich (Verschlüsselung, Zugriffskontrolle)
  • Integrity (Integrität): Daten werden nicht unbefugt verändert (Signaturen, Hashes, Validierung)
  • Availability (Verfügbarkeit): Dienste sind erreichbar, wenn sie benötigt werden (DDoS-Schutz, Redundanz, Backups)

2. OWASP Top 10 (2021)

Die OWASP Top 10 ist eine Standard-Liste der häufigsten und kritischsten Sicherheitslücken in Webanwendungen. Sie wird alle 3-4 Jahre vom Open Web Application Security Project (OWASP) aktualisiert.

A01

Broken Access Control

Fehlerhafte Zugriffskontrolle

Benutzer können auf Ressourcen zugreifen, für die sie keine Berechtigung haben. Z.B. direkte URL-Manipulation oder IDOR (Insecure Direct Object Reference).

Auswirkung: Unbefugter Zugriff auf sensible Daten, Funktionsmissbrauch, Datenmanipulation.
A02

Cryptographic Failures

Kryptographische Fehler

Schwache oder fehlende Verschlüsselung, unsichere Algorithmen (MD5, SHA1), unsichere Schlüsselverwaltung, Passwörter im Klartext gespeichert.

Auswirkung: Abfangen sensibler Daten (Passwörter, Kreditkarten), Datenlecks.
A03

Injection

Einschleusungen (SQL, XSS, OS)

Angreifer schleusen schädlichen Code ein, der vom Interpreter ausgeführt wird. Häufigste Formen: SQL Injection, XSS, Command Injection.

Auswirkung: Datenverlust, vollständige Systemübernahme, Datenmanipulation.
A04

Insecure Design

Unsicheres Design

Fehlende oder ineffektive Sicherheitskontrollen bereits im Design. Z.B. fehlende Rate Limiting, keine Threat Modeling, unsichere Geschäftslogik.

Auswirkung: Systematische Schwachstellen, die nicht durch Code-Fixes behoben werden können.
A05

Security Misconfiguration

Fehlerhafte Sicherheitskonfiguration

Standard-Passwörter, unnötige Features aktiviert, offene Cloud-Buckets, fehlende Security Headers, detaillierte Fehlermeldungen.

Auswirkung: Unbefugter Zugriff, Informationslecks, vollständige Systemübernahme.
A06

Vulnerable Components

Verwundbare Komponenten

Verwendung von Bibliotheken, Frameworks oder Software mit bekannten Schwachstellen (z.B. alte Log4j-Version, unsichere npm-Pakete).

Auswirkung: Automatische Ausnutzung bekannter Schwachstellen, Datenverlust.
A07

Identification & Auth Failures

Schwache Authentifizierung

Schwache Passwörter, fehlende MFA, Session Hijacking, unsichere Passwort-Reset-Mechanismen, Credential Stuffing.

Auswirkung: Account-Übernahme, Identitätsdiebstahl, unbefugter Zugriff.
A08

Software & Data Integrity

Integritätsprobleme

Fehlende Verifizierung von Updates, unsichere CI/CD-Pipelines, Deserialisierung vertrauenswürdiger Daten ohne Validierung.

Auswirkung: Einschleusen von Malware, Remote Code Execution.
A09

Logging & Monitoring

Fehlendes Logging & Monitoring

Keine oder unzureichende Protokollierung von Sicherheitsereignissen, fehlende Alerts, keine zentrale Log-Analyse.

Auswirkung: Angriffe werden nicht erkannt, verzögerte Reaktion, forensische Probleme.
A10

SSRF

Server-Side Request Forgery

Angreifer zwingen den Server, Anfragen an interne oder externe Ressourcen zu senden. Z.B. Zugriff auf interne APIs, Cloud-Metadaten.

Auswirkung: Zugriff auf interne Systeme, Datenlecks, vollständige Systemübernahme.

3. Häufige Angriffstypen im Detail

Die vier häufigsten und gefährlichsten Angriffe auf Webanwendungen im Detail erklärt:

XSS (Cross-Site Scripting)

Einschleusen von Client-Side-Scripten

Angreifer injizieren schädliche JavaScript-Codes in Webseiten, die dann im Browser anderer Benutzer ausgeführt werden.

Beispiel (Reflected XSS):
// Unsichere Eingabe Suche: <script>alert('XSS')</script> // Wird ausgeführt im Browser <script>alert('XSS')</script>
Schutzmaßnahmen:
✅ Defense:
  • Output Encoding (HTML, JS, URL)
  • Content Security Policy (CSP)
  • Input Validation
  • HttpOnly & Secure Cookies

SQL Injection

Manipulation von Datenbankabfragen

Angreifer schleusen SQL-Code in Eingabefelder ein, um Datenbankabfragen zu manipulieren und Daten abzugreifen oder zu verändern.

Beispiel:
// Unsichere Abfrage SELECT * FROM users WHERE name = '$input' // Angreifer gibt ein: ' OR '1'='1 // Resultierende Abfrage: SELECT * FROM users WHERE name = '' OR '1'='1' // Gibt ALLE Benutzer zurück!
Schutzmaßnahmen:
✅ Defense:
  • Prepared Statements (Parameterized Queries)
  • ORM-Frameworks verwenden
  • Input Validation & Sanitization
  • Least Privilege für DB-User

CSRF (Cross-Site Request Forgery)

Erzwingen ungewollter Aktionen

Angreifer zwingen einen authentifizierten Benutzer, ungewollte Aktionen auf einer Website auszuführen (z.B. Geld überweisen, Passwort ändern).

Beispiel:
<!-- Angreifer platziert auf eigener Seite: --> <img src="https://bank.com/transfer?to=attacker&amount=1000"> <!-- Wenn Benutzer eingeloggt ist, --> <!-- wird die Überweisung automatisch ausgeführt! -->
Schutzmaßnahmen:
✅ Defense:
  • CSRF-Tokens (Synchronizer Token Pattern)
  • SameSite Cookie Attribute
  • Referer/Origin Header prüfen
  • Re-Authentication für kritische Aktionen

Authentication Bypass

Umgehung der Authentifizierung

Angreifer umgehen die Authentifizierung durch Schwachstellen wie schwache Passwörter, Session Hijacking, Credential Stuffing oder Brute-Force.

Häufige Schwachstellen:
// Unsichere Passwort-Prüfung if (password === "admin123") { // Zugriff gewähren } // Unsichere Session-Verwaltung session.id = user.id; // Vorhersehbar!
Schutzmaßnahmen:
✅ Defense:
  • Starke Passwort-Policies
  • Multi-Faktor-Authentifizierung (MFA)
  • Rate Limiting für Login-Versuche
  • Sichere Session-IDs (zufällig, lang)

4. Wichtige Schutzmaßnahmen

Die wichtigsten Maßnahmen zum Schutz von Webanwendungen:

HTTPS / TLS

  • Verschlüsselte Kommunikation zwischen Client und Server
  • Schutz vor MitM-Angriffen und Abhören
  • TLS 1.2 oder 1.3 verwenden (SSL 3.0, TLS 1.0/1.1 deaktivieren)
  • Let's Encrypt für kostenlose Zertifikate
  • HSTS (HTTP Strict Transport Security) aktivieren

Content Security Policy (CSP)

  • Definiert, welche Ressourcen geladen werden dürfen
  • Schutz vor XSS-Angriffen
  • Beispiel: Content-Security-Policy: default-src 'self'
  • Inline-Scripts blockieren
  • Reporting für Verstöße aktivieren

Input Validation & Sanitization

  • Alle Benutzereingaben validieren (Whitelist > Blacklist)
  • Output Encoding je nach Kontext (HTML, JS, URL, CSS)
  • Prepared Statements für Datenbankabfragen
  • File Upload: Typ, Größe, Endung prüfen
  • Libraries wie DOMPurify für HTML-Sanitization

Sichere Authentifizierung

  • Multi-Faktor-Authentifizierung (MFA) erzwingen
  • Starke Passwort-Policies (min. 12 Zeichen)
  • Rate Limiting für Login-Versuche
  • Account Lockout nach X Fehlversuchen
  • Sichere Passwort-Reset-Mechanismen

Passwort-Hashing

  • Niemals Passwörter im Klartext speichern!
  • bcrypt, Argon2 oder scrypt verwenden
  • MD5 und SHA1 veraltet – nicht nutzen!
  • Salt für jedes Passwort (eindeutig, zufällig)
  • Hohe Iterationszahl (min. 10.000 bei bcrypt)

CORS (Cross-Origin Resource Sharing)

  • Kontrolliert, welche Domains auf Ressourcen zugreifen dürfen
  • Nicht * für sensible APIs verwenden
  • Whitelist vertrauenswürdiger Domains
  • Credentials nur bei expliziter Erlaubnis
  • Preflight-Requests (OPTIONS) korrekt behandeln

5. Wichtige Security Headers

HTTP Security Header sind eine einfache, aber effektive Maßnahme zur Verbesserung der Web-Sicherheit:

Header Beschreibung Beispiel
Strict-Transport-Security (HSTS) Erzwingt HTTPS-Verbindungen max-age=31536000; includeSubDomains
Content-Security-Policy (CSP) Kontrolliert erlaubte Ressourcen default-src 'self'; script-src 'self'
X-Content-Type-Options Verhindert MIME-Type-Sniffing nosniff
X-Frame-Options Schutz vor Clickjacking DENY oder SAMEORIGIN
X-XSS-Protection Aktiviert Browser-XSS-Filter (veraltet, aber nützlich) 1; mode=block
Referrer-Policy Kontrolliert Referrer-Informationen strict-origin-when-cross-origin
Permissions-Policy Kontrolliert Browser-Features (Kamera, Mikrofon) camera=(), microphone=()
Cache-Control Verhindert Caching sensibler Daten no-store, no-cache, must-revalidate

Security Headers testen

Verwenden Sie Online-Tools wie securityheaders.com oder Mozilla Observatory, um die Security Headers Ihrer Website zu überprüfen und Verbesserungsvorschläge zu erhalten.

6. Web Security Tools

Wichtige Tools für Security-Testing, Vulnerability Scanning und Penetration Testing:

OWASP ZAP

Open-Source Web Application Security Scanner. Automatisierte Vulnerability Scans und manuelle Tests.

Scanner · Open Source
Burp Suite

Professionelle Web Security Testing Platform. Proxy, Scanner, Intruder, Repeater und mehr.

Testing · Kommerziell
Nikto

Open-Source Web Server Scanner. Findet gefährliche Dateien, veraltete Software und Konfigurationsprobleme.

Scanner · Open Source
SQLMap

Automatisches SQL Injection Detection und Exploitation Tool. Unterstützt alle gängigen Datenbanken.

Exploitation · Open Source
Nmap

Network Mapper für Port Scanning, Service Detection und OS Fingerprinting.

Network · Open Source
HashCat

GPU-basiertes Passwort-Cracking Tool. Unterstützt über 300 Hash-Typen.

Cracking · Open Source
Mozilla Observatory

Online-Tool zur Überprüfung von Security Headers und HTTPS-Konfiguration.

Online · Kostenlos
SSL Labs

Online-Tool zur Überprüfung der SSL/TLS-Konfiguration (Qualys SSL Labs).

Online · Kostenlos
Snyk

SCA (Software Composition Analysis) Tool. Findet verwundbare Dependencies in Projekten.

SCA · Freemium
Metasploit

Professionelles Penetration Testing Framework mit über 2.000 Exploits.

Exploitation · Open Source

7. Best Practices für Web Security

Bewährte Praktiken für sichere Webanwendungen in Entwicklung und Betrieb:

Sichere Entwicklung

  • Security by Design von Anfang an
  • Threat Modeling für kritische Features
  • Code Reviews mit Security-Fokus
  • OWASP Guidelines befolgen
  • Dependency Scanning in CI/CD
  • Secure Coding Standards etablieren

Sicherer Betrieb

  • Regelmäßige Updates (OS, Frameworks, Libraries)
  • Security Headers konfigurieren
  • HTTPS erzwingen (HSTS)
  • Firewall-Regeln restriktiv halten
  • Backups regelmäßig testen
  • Monitoring & Alerting einrichten

Regelmäßige Audits

  • Penetration Tests (mindestens jährlich)
  • Vulnerability Scans (automatisiert, wöchentlich)
  • Code Audits durch externe Experten
  • Compliance-Checks (DSGVO, ISO 27001)
  • Security Metrics tracken
  • Risk Assessments durchführen

Incident Response

  • Incident Response Plan erstellen und testen
  • Notfall-Kontakte definieren
  • Forensische Tools bereithalten
  • Logs zentral sammeln (SIEM)
  • Kommunikationsplan für Datenlecks
  • Post-Incident Reviews durchführen

Die 10 wichtigsten Regeln

  1. HTTPS überall: Keine unverschlüsselten Verbindungen
  2. Input Validation: Alle Benutzereingaben validieren und sanitizen
  3. Output Encoding: Daten kontextgerecht codieren (HTML, JS, URL)
  4. Prepared Statements: Niemals SQL-Queries mit String-Concatenation
  5. Passwort-Hashing: bcrypt/Argon2 mit Salt, niemals Klartext
  6. MFA: Multi-Faktor-Authentifizierung wo immer möglich
  7. Security Headers: CSP, HSTS, X-Frame-Options konfigurieren
  8. Updates: Regelmäßig alle Komponenten aktualisieren
  9. Least Privilege: Minimale Berechtigungen für alle Accounts
  10. Logging & Monitoring: Alle sicherheitsrelevanten Events loggen

8. FAQ – Häufige Fragen & Antworten

Häufige Fragen zur Web Security

Was ist der Unterschied zwischen XSS und CSRF?

XSS (Cross-Site Scripting): Angreifer injizieren schädliche Scripts in eine Webseite, die dann im Browser anderer Benutzer ausgeführt werden. Ziel: Daten stehlen, Sessions übernehmen.

CSRF (Cross-Site Request Forgery): Angreifer zwingen einen authentifizierten Benutzer, ungewollte Aktionen auf einer Website auszuführen. Ziel: Aktionen im Namen des Benutzers durchführen.

Unterschied: XSS nutzt den Browser als Angriffsvektor, CSRF nutzt die Authentifizierung des Benutzers.

Wie schütze ich mich vor SQL Injection?

Die effektivsten Schutzmaßnahmen gegen SQL Injection:

  • Prepared Statements: Verwenden Sie parameterisierte Queries statt String-Concatenation
  • ORM-Frameworks: Nutzen Sie Object-Relational Mapper wie Hibernate, Entity Framework, Sequelize
  • Input Validation: Validieren Sie alle Benutzereingaben (Whitelist-Ansatz)
  • Least Privilege: Datenbank-User nur minimale Berechtigungen geben
  • Web Application Firewall (WAF): Zusätzliche Schutzschicht

Beispiel (unsicher): SELECT * FROM users WHERE name = '$input'

Beispiel (sicher): SELECT * FROM users WHERE name = ? (mit Prepared Statement)

Was ist eine Content Security Policy (CSP)?

Content Security Policy (CSP) ist ein HTTP-Header, der definiert, welche Ressourcen (Scripts, Styles, Images, etc.) von einer Webseite geladen werden dürfen. CSP ist ein effektiver Schutz gegen XSS-Angriffe.

Beispiel:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.com; style-src 'self' 'unsafe-inline'

Wirkung: Nur Scripts von der eigenen Domain und https://trusted.com werden ausgeführt. Inline-Scripts sind blockiert (außer Styles).

Vorteile: Verhindert XSS, kontrolliert Datenlecks, erhöht Transparenz.

Warum ist HTTPS so wichtig?

HTTPS (HTTP over TLS/SSL) ist aus mehreren Gründen unverzichtbar:

  • Verschlüsselung: Schutz vor Abhören (MitM-Angriffe)
  • Integrität: Daten werden nicht manipuliert
  • Authentifizierung: Benutzer können sicher sein, mit dem richtigen Server zu kommunizieren
  • SEO: Google bevorzugt HTTPS-Websites
  • Browser-Warnungen: Moderne Browser markieren HTTP als "unsicher"
  • Compliance: DSGVO und andere Vorschriften verlangen Verschlüsselung

Empfehlung: HTTPS überall, auch für interne Anwendungen. Kostenlose Zertifikate von Let's Encrypt nutzen.

Wie speichere ich Passwörter sicher?

Niemals Passwörter im Klartext speichern! Verwenden Sie stattdessen:

  • bcrypt: Bewährter Algorithmus mit konfigurierbarer Iterationszahl (min. 10.000)
  • Argon2: Modernster Algorithmus (Gewinner des Password Hashing Competition 2015)
  • scrypt: Speicherintensiver Algorithmus, gut gegen GPU-Cracking

Wichtige Regeln:

  • Einzigartiger Salt für jedes Passwort
  • Hohe Iterationszahl (Work Factor)
  • Regelmäßige Überprüfung auf Datenlecks (Have I Been Pwned API)
  • Peppering für zusätzliche Sicherheit

Beispiel (bcrypt in Node.js):

const hash = await bcrypt.hash(password, 12);
Was ist der Unterschied zwischen JWT und Session-Cookies?

Session-Cookies:

  • Server speichert Session-Daten (z.B. in Redis, Datenbank)
  • Client erhält nur Session-ID (Cookie)
  • Einfache Invalidierung möglich (Server löscht Session)
  • Stateful (Server muss Zustand verwalten)

JWT (JSON Web Tokens):

  • Token enthält alle Daten (signiert, optional verschlüsselt)
  • Server muss keine Daten speichern
  • Stateless (ideal für Microservices)
  • Schwerer zu invalidieren (bis Ablauf)

Empfehlung: Session-Cookies für traditionelle Web-Apps, JWT für APIs und Microservices. Bei JWT: HttpOnly + Secure + SameSite Cookies verwenden, niemals im LocalStorage!

Wie teste ich meine Webanwendung auf Sicherheitslücken?

Ein umfassender Security-Test umfasst mehrere Ebenen:

  • Automatisierte Scans: OWASP ZAP, Burp Suite, Nikto (wöchentlich)
  • Dependency Scanning: Snyk, npm audit, OWASP Dependency-Check
  • Manuelle Tests: Penetration Testing durch Experten (jährlich)
  • Code Reviews: Security-Fokus bei jedem Pull Request
  • Threat Modeling: Bei neuen Features Architekturen analysieren
  • Bug Bounty Programme: Externe Hacker belohnen

Wichtig: Niemals Sicherheitstests auf Produktionsystemen ohne Absprache durchführen! Test-Umgebungen verwenden.

Was tun bei einem Sicherheitsvorfall?

Im Falle eines Sicherheitsvorfalls (Data Breach, Kompromittierung) sollten Sie:

  • 1. Identifizieren: Was ist passiert? Welche Systeme sind betroffen?
  • 2. Eindämmen: Betroffene Systeme isolieren, Angreifer aussperren
  • 3. Beseitigen: Schwachstelle patchen, Malware entfernen
  • 4. Wiederherstellen: Systeme aus sauberen Backups wiederherstellen
  • 5. Analysieren: Forensische Untersuchung, Root Cause Analysis
  • 6. Kommunizieren: Betroffene informieren, DSGVO-Meldepflicht (72h)
  • 7. Lernen: Post-Incident Review, Prozesse verbessern

Wichtig: Incident Response Plan VOR einem Vorfall erstellen und regelmäßig testen!

Zusammenfassung

Die wichtigsten Punkte

  • Web Security: Schutz von Webanwendungen vor Angriffen und Missbrauch
  • OWASP Top 10: Die 10 kritischsten Sicherheitslücken (A01-A10)
  • Häufige Angriffe: XSS, SQL Injection, CSRF, Authentication Bypass
  • Schutzmaßnahmen: HTTPS, CSP, Input Validation, Password Hashing, CORS
  • Security Headers: HSTS, CSP, X-Frame-Options, Referrer-Policy
  • Tools: OWASP ZAP, Burp Suite, Nikto, SQLMap, Nmap, HashCat
  • Best Practices: Secure Development, Operations, Audits, Incident Response
  • 10 Regeln: HTTPS, Input Validation, Prepared Statements, MFA, etc.

Security ist ein Prozess, kein Produkt

Web Security ist keine einmalige Maßnahme, sondern ein kontinuierlicher Prozess. Bedrohungen entwickeln sich ständig weiter, und Ihre Sicherheitsmaßnahmen müssen sich ebenfalls weiterentwickeln. Investieren Sie in regelmäßige Schulungen, Audits und Tests – die Kosten für Prävention sind immer geringer als die Kosten für einen erfolgreichen Angriff.

Weiterführende Themen

Authentication Web

Authentifizierungsmethoden: OAuth 2.0, OpenID Connect, SAML, JWT und MFA.

Zur Authentifizierung
Web APIs

REST, GraphQL, API-Sicherheit und Best Practices für API-Design.

Zu Web APIs
IT-Sicherheit

Umfassende IT-Sicherheit: Kryptographie, Netzwerksicherheit, Penetration Testing.

Zur IT-Sicherheit
Backend Frameworks

Serverseitige Frameworks: Node.js, Django, Spring Boot, Laravel und mehr.

Zu Backend Frameworks