Jede Unternehmenswebsite hat ein Kontaktformular. Es ist der einfachste Weg fur potenzielle Kunden, Sie zu erreichen. Es ist in vielen Fallen auch der einfachste Weg fur Angreifer, Ihren Server zu erreichen.
Ein Kontaktformular ist eine Schnittstelle zwischen der Aussenwelt und Ihrer Webanwendung. Es akzeptiert Eingaben von jedem im Internet und leitet sie zur Verarbeitung an Ihren Server weiter. Wenn diese Eingaben nicht korrekt validiert und bereinigt werden, wird das Formular zum Angriffsvektor.
Wie Formulare zu Angriffsvektoren Werden
Das grundlegende Problem ist Vertrauen. Wenn Ihre Anwendung darauf vertraut, dass die Daten aus einem Formular sicher und korrekt formatiert sind, wird ein Angreifer Daten senden, die weder sicher noch korrekt formatiert sind.
Clientseitige Validierung Ist Keine Sicherheit
Viele Entwickler (und viele Web-Agenturen im Tessin) implementieren Formularvalidierung nur im Browser uber JavaScript. Das bietet eine gute Benutzererfahrung, aber null Sicherheit. Ein Angreifer umgeht sie mit deaktiviertem JavaScript, curl oder Burp Suite.
SQL-Injection Uber Formularfelder
SQL-Injection tritt auf, wenn Formulareingaben direkt ohne Parametrisierung in eine Datenbankabfrage eingefugt werden. Ein Angreifer kann Ihre gesamte Datenbank lesen, Daten andern, Tabellen loschen und in manchen Konfigurationen Systembefehle ausfuhren.
Die Losung
Parametrisierte Abfragen (Prepared Statements). Der Parameter wird als Daten behandelt, nie als SQL-Code.
Cross-Site Scripting (XSS) uber Eingabefelder
XSS funktioniert, wenn ubermittelte Daten ohne korrekte Kodierung auf einer Seite angezeigt werden. Ein Angreifer ubermittelt JavaScript uber Ihr Formular, und wenn ein Admin die Einreichung ansieht, wird das Script in seinem Browser ausgefuhrt und stiehlt seine Session.
Die Losung
Ausgabekodierung und Content-Security-Policy (CSP) Header. Siehe unseren Leitfaden zu den OWASP Top 10 Schwachstellen.
Datei-Upload-Schwachstellen
Wenn die Upload-Validierung unzureichend ist, kann ein Angreifer ein PHP-Script als Bild getarnt hochladen. Haufige Umgehungstechniken:
- Doppelte Erweiterung:
malware.php.jpg - MIME-Typ-Spoofing: Content-Type als
image/jpegfur eine PHP-Datei - Null-Byte-Injection:
malware.php%00.jpg - .htaccess-Upload: Server neu konfigurieren, um .jpg als PHP auszufuhren
Die Losung
- Dateiinhalt validieren, nicht nur Erweiterungen
- Dateien ausserhalb des Web-Roots speichern
- Zufallsnamen vergeben (UUID)
- Whitelist erlaubter Dateitypen verwenden
Cross-Site Request Forgery (CSRF)
CSRF tauscht einen Benutzer, damit er ein Formular absendet, das er nicht absenden wollte. Die Losung: einzigartige CSRF-Tokens in jedem Formular und das SameSite-Attribut auf Session-Cookies.
E-Mail-Header-Injection
Ein Angreifer injiziert zusatzliche E-Mail-Header uber das E-Mail-Feld und verwandelt Ihren Server in ein Spam-Relay. Das fuhrt zur Blacklistung Ihres Mailservers und zur Beschadigung Ihrer Domain-Reputation.
Die Losung
E-Mail-Bibliotheken verwenden (PHPMailer, Nodemailer) statt roher mail()-Funktionen. Zeilenumbruch-Zeichen aus allen Eingaben entfernen.
SSRF uber URL-Felder
Wenn Ihr Formular URLs akzeptiert, kann ein Angreifer URLs einreichen, die auf interne Ressourcen zeigen. Validieren, Protokolle einschranken, private IP-Bereiche blockieren.
Spam und Automatisierter Missbrauch
CAPTCHA vs. Honeypot
CAPTCHA fugt eine Herausforderung hinzu, die Bots nicht leicht losen konnen. Honeypot-Felder sind versteckte Felder, die Menschen nie sehen, aber Bots ausfullen. Best Practice: beides verwenden.
Rate Limiting
Formulareinreichungen pro IP und Zeitraum begrenzen.
So Testen Sie Ihre Formulare Sicher
XSS-Test
Senden Sie <script>alert('test')</script> in jedem Feld. Ein JavaScript-Popup zeigt Verwundbarkeit an.
E-Mail-Header-Injection-Test
Senden Sie test@example.com%0ABcc:test2@example.com im E-Mail-Feld.
Basis-SQLi-Test
Senden Sie test' OR '1'='1 in einem Textfeld. Fehlermeldungen mit SQL-Bezug deuten auf Verwundbarkeit hin.
Dies sind Basistests. Fur eine professionelle Bewertung kontaktieren Sie unser Team.
Formularsicherheits-Checkliste
| Massnahme | Verhindert | Implementierung |
|---|---|---|
| Serverseitige Validierung | Alle Injection-Angriffe | Typ, Lange, Format, erlaubte Zeichen validieren |
| Parametrisierte Abfragen | SQL-Injection | Prepared Statements |
| Ausgabekodierung | XSS | HTML-Kodierung aller Benutzerdaten |
| CSRF-Tokens | CSRF | Einzigartige Tokens in jedem Formular |
| Upload-Validierung | Code-Ausfuhrung | Whitelist, Inhaltsvalidierung, Speicherung ausserhalb Web-Root |
| E-Mail-Header-Bereinigung | Header-Injection | E-Mail-Bibliotheken, Zeilenumbruche entfernen |
| Rate Limiting | Spam, Brute Force | Einreichungen pro IP begrenzen |
| CAPTCHA oder Honeypot | Automatisierter Spam | reCAPTCHA, hCaptcha oder verstecktes Feld |
Fur HTTP-Security-Header siehe unseren Leitfaden zu Security-Headern.
Reale Beispiele aus dem Tessin
Fall 1: Eine Personalvermittlung
Bewerbungsformular mit Lebenslauf-Upload ohne Server-Validierung. PHP-Web-Shell hochgeladen. Kandidaten-Datenbank extrahiert.
Fall 2: Ein Gastgewerbe-Betrieb
Reservierungsformular ohne CSRF-Schutz. Reservierungen manipuliert, Bestatigungs-E-Mails umgeleitet. Gaste betrogen.
Fall 3: Eine Beratungsfirma
E-Mail-Header-Injection im Kontaktformular. Uber 50.000 Spam-E-Mails uber den Firmen-Mailserver versendet. Drei Wochen auf der Blacklist.
Was Sie Jetzt Tun Sollten
- Prufen Sie Ihre Formulare mit den beschriebenen Tests.
- Fragen Sie Ihren Entwickler: "Werden Eingaben serverseitig validiert? Verwenden wir parametrisierte Abfragen? Haben unsere Formulare CSRF-Tokens?"
- Implementieren Sie Security Headers. CSP bietet Tiefenverteidigung gegen XSS.
- Holen Sie eine professionelle Bewertung. Kontaktieren Sie unser Team fur ein umfassendes Sicherheitsaudit.
Ihr Kontaktformular soll Sie mit Kunden verbinden. Stellen Sie sicher, dass es Sie nicht auch mit Angreifern verbindet.
Wollen Sie wissen, ob Ihre Website sicher ist?
Fordern Sie ein kostenloses Sicherheitsaudit an. In 48 Stunden erhalten Sie einen vollständigen Bericht.
Kostenloses Audit Anfordern