Edge-Funktionen und Server Actions — ohne PHP-Server
Sobald eine Website ein Kontaktformular hat, braucht sie irgendwo Code, der die Eingabe entgegennimmt, prüft und weiterleitet — in der klassischen Welt ist das PHP auf einem Webserver, oft mit Datenbank dahinter. In der modernen, statisch gerenderten Welt entfällt der Webserver fast vollständig; übrig bleiben kleine, präzise abgegrenzte Funktionen, die bei Bedarf ausgeführt werden: Edge-Funktionen und Server Actions. Diese Architektur ist nicht nur eleganter, sondern hat für Kanzlei-Websites einen konkreten Sicherheits-Mehrwert: Die größten klassischen Angriffsklassen existieren strukturell nicht. Dieser Artikel erklärt, wie das Kontaktformular auf fahoch2.de gebaut ist, was Edge-Funktionen und Server Actions konkret tun — und wie wir Honeypot und Rate-Limiting ohne CAPTCHA absichern.
Was Sie aus diesem Artikel mitnehmen
- Warum eine statisch gerenderte Site trotzdem ein funktionierendes Kontaktformular haben kann
- Was Edge-Funktionen und Server Actions konkret tun — verständlich erklärt
- Wie wir das Kontaktformular auf fahoch2.de gebaut haben (Honeypot, Rate-Limit, Mail-Versand)
- Warum diese Architektur eine ganze Klasse von Angriffen strukturell ausschließt
Würdigung — der Mini-Backend ohne klassischen Server
Klassische CMS-Sites wie WordPress haben einen Server, der bei jeder Seitenanfrage Code ausführt — auch dort, wo gar kein dynamischer Inhalt nötig ist. Dieser dauerhaft laufende Server ist die historische Quelle der meisten Sicherheits-Probleme: Plugin-Lücken, SQL-Injections, Server-Konfigurations-Fehler. Eine statisch gerenderte Site hat keinen solchen Dauer-Server — das HTML kommt aus dem CDN, der Browser bekommt fertige Dateien.
Aber: Ein Kontaktformular ist Dynamik. Es nimmt Eingaben entgegen, sendet eine Mail, will gegen Spam geschützt sein. Wie geht das ohne Dauer-Server? Die moderne Antwort heißt: Code-Schnipsel, die nur bei genau dieser Aktion ausgeführt werden, danach wieder verschwinden. Das sind Edge-Funktionen und Server Actions — kleine, präzise abgegrenzte Funktionen, die das Formular-Verarbeiten machen und sonst nichts.
Hinweis:
Wenn Sie wissen wollen, wie Ihre aktuelle Kontaktformular-Architektur aussieht (klassischer Server oder Edge-Funktion), ordnet unser kostenfreier URL-Audit das ein.
Was sind Edge-Funktionen und Server Actions?
Beide Begriffe beschreiben dasselbe Grund-Prinzip: serverseitiger Code, der bei einer Anfrage hochgefahren, ausgeführt und danach beendet wird — kein Dauer-Server. Sie unterscheiden sich in den Details:
- Edge-Funktionen laufen nicht in einem einzelnen Rechenzentrum, sondern in der CDN-Infrastruktur des Hosting-Anbieters — bei Vercel z. B. weltweit auf etwa hundert Knoten. Die Funktion wird im Knoten ausgeführt, der dem Besucher am nächsten ist, also extrem schnell. Klassischer Einsatz: API-Endpunkte, OG-Image-Generierung, Authentifizierungs-Checks.
- Server Actions sind eine Next.js-Spezifität: Funktionen, die im Komponenten-Code als serverseitige Aktionen markiert sind und vom Browser direkt aufgerufen werden können, ohne dass ein separater API-Endpunkt definiert werden muss. Sie laufen in einer Serverless-Funktion bei Vercel (entweder Edge oder Node.js, je nach Konfiguration). Klassischer Einsatz: Formular-Submissions, Datenbank-Mutationen.
Beide Modelle haben gemeinsam: Sie existieren nur während der Ausführung. Was nicht läuft, kann nicht angegriffen werden — eine fundamentale Sicherheits-Vereinfachung gegenüber dem klassischen Server.
Das Kontaktformular auf fahoch2.de — Schritt für Schritt
Der Weg einer Kontakt-Anfrage:
- Besucher tippt Name, E-Mail und Nachricht in das Formular. Das Formular selbst ist statisches HTML aus dem CDN — keine Server-Last bis hier.
- Beim Absenden ruft der Browser eine Server Action auf — eine Funktion in unserer Codebasis, die als „serverseitig" markiert ist. Vercel startet eine Serverless-Funktion (in Millisekunden), die die Eingabe entgegennimmt.
- Honeypot-Check. Das Formular hat ein verstecktes Feld, das normale Besucher nie ausfüllen, Bots dagegen häufig. Wenn das Feld einen Wert enthält, beendet die Funktion still — die Anfrage wird verworfen, der Bot bekommt keine Fehlermeldung, die er auswerten könnte.
- Rate-Limit-Check über Upstash. Pro IP-Adresse erlauben wir eine begrenzte Anzahl Anfragen pro Stunde. Die Funktion fragt einen Upstash-Redis-Counter (in der EU-Region), erhöht ihn und bricht ab, wenn die Schwelle überschritten ist.
- Validierung der Eingaben. Pflichtfelder gefüllt? E-Mail-Format gültig? Nachricht-Länge plausibel? Diese Prüfungen passieren ebenfalls in der Funktion.
- Mail-Versand über Resend. Eine HTTPS-Anfrage an die Resend-API schickt die Anfrage als E-Mail an unsere Mandanten-Adresse. Die Funktion wartet auf die Bestätigung und gibt dann den Erfolg an den Browser zurück.
- Funktion beendet sich. Kein Dauer-Zustand, keine Datenbank, keine laufende Anwendung.
Der ganze Vorgang dauert in der Regel unter 500 Millisekunden. Eine erfolgreiche Übermittlung führt zu einer Bestätigung im Browser, eine fehlgeschlagene zu einer freundlichen Fehlermeldung.
Drei Anwendungs-Fälle für Kanzlei-Sites
Edge-Funktionen und Server Actions sind nicht nur fürs Kontaktformular nützlich. Drei weitere Standard-Einsätze auf Kanzlei-Sites:
- URL-Audit-Tool. Unser kostenfreies URL-Audit (Eingabe einer Kanzlei-Website, automatische Stichproben-Analyse) ist eine längere Edge-Funktion, die HTTP-Anfragen ausführt und einen Bericht erzeugt — ohne dass dafür ein dauerhafter Server nötig wäre.
- OG-Image-Generierung pro Seite. Auf fahoch2.de generieren wir pro Insight, pro Stadt-Landingpage und pro Audit-Report ein eigenes Open-Graph-Bild — über Edge-Funktionen, die das Bild zur Lauf-Zeit aus Text und Komponenten rendern.
- Newsletter-Anmeldung / Lead-Capture. Die Strecke „Formular → CRM oder Newsletter-Tool" läuft analog zum Kontaktformular: Server Action nimmt entgegen, prüft, leitet via API an das Ziel-System weiter — alles ohne dauerhaft laufenden Server.
Sicherheits-Schichten ohne CAPTCHA
Bewusst NICHT auf der Site: Google reCAPTCHA. Aus DSGVO-Sicht problematisch (Google sieht jeden Besucher), nutzungs-feindlich (Captcha-Aufgaben nerven) und reagiert oft falsch (echte Mandanten werden blockiert). Unsere Alternative — bewusst minimalistisch:
- Honeypot-Feld (verstecktes Input, das Bots oft ausfüllen). Effektiv gegen alle einfachen Spam-Bots, kostet den Besucher null Wahrnehmung.
- Upstash-Rate-Limit (Anzahl Anfragen pro IP und Stunde begrenzt). Schützt gegen aggressive Bots, die das Honeypot umgehen.
- Server-seitige Validierung (Eingabe-Längen, E-Mail-Format, Pflichtfelder). Fängt strukturell unsinnige Anfragen ab.
- Optional: Cloudflare Turnstile als zweite Schicht für Sites mit hohem Spam-Druck — DSGVO-konformer Captcha-Ersatz ohne Bilderpuzzle.
Tiefer dazu: Form-Spam-Bot-Abwehr-Insight.
Warum das eine Klasse von Angriffen ausschließt
Drei klassische Angriffsklassen, die in dieser Architektur strukturell nicht existieren:
- SQL-Injection. Es gibt keine Datenbank, also auch keine SQL-Anfragen, die manipuliert werden könnten.
- Plugin-Lücken im CMS. Es gibt kein CMS mit Plugin-System; jeder Code-Strich ist von uns geschrieben und versioniert.
- Server-Konfigurations-Fehler. Es gibt keinen dauerhaft laufenden Server, der falsch konfiguriert sein könnte; die Funktionen starten in einer standardisierten Umgebung, die der Hosting-Anbieter pflegt.
Das ist nicht keine Angriffsfläche, aber eine deutlich kleinere und besser eingegrenzte. Was bleibt: Input-Validierung in der Server Action selbst, Rate-Limit gegen Brute-Force, Schutz der API-Schlüssel (Mail-Provider, Upstash) als Umgebungsvariablen, die nie im Browser sichtbar werden.
Beispiel:
Ein bekanntes Muster bei WordPress-basierten Kanzlei-Sites: das Kontaktformular läuft über ein verbreitetes Plugin, das wegen ungelaufener Updates eine offene Sicherheits-Lücke trägt. Auf einer Edge-Architektur (wie sie auf fahoch2.de läuft) existiert dieses Angriffs-Szenario strukturell nicht: kein Plugin, das veralten kann, kein Datenbank-Zugriff, der manipuliert werden könnte. Wer ähnliche Stack-Entscheidungen für die eigene Site überlegt: ein Erstgespräch (30 Minuten, kostenfrei) ordnet die Optionen ein.
Wie wir es bauen
Bei jedem Kanzlei-Projekt richten wir das Kontaktformular standardmäßig als Server Action ein, mit Honeypot, Rate-Limit über Upstash (EU-Region), Resend für den Mail-Versand und voller Validierung. Die API-Schlüssel leben als Umgebungsvariablen bei Vercel — nicht im Code, nicht im Repo. Der gleiche Ansatz skaliert für Newsletter-Anmeldung, Lead-Capture und kleine API-Tools. Wer mehr Schichten braucht (z. B. eingebundener Mandanten-Login), schiebt das in eigenständige Backend-Services — die Site selbst bleibt statisch + Edge-Funktionen, was die Wartbarkeit hoch hält.
Für eine strukturierte Bewertung der Formular- und Backend-Architektur einer bestehenden Kanzlei-Site empfehlen wir den Hebel-Audit (890 €, bei Mandanten-Boost-Beauftragung innerhalb von 60 Tagen voll anrechenbar).
Zusammenfassung
Eine moderne, statisch gerenderte Kanzlei-Website braucht für ihr Kontaktformular keinen klassischen Webserver. Edge-Funktionen und Server Actions sind kleine, präzise abgegrenzte Funktionen, die bei einer Anfrage starten, sie verarbeiten und sich beenden — kein Dauer-Zustand, kein Plugin-System, keine Datenbank. Auf fahoch2.de läuft das Kontaktformular als Server Action mit Honeypot-Spam-Abwehr, Rate-Limit über Upstash (EU-Region), Server-seitiger Validierung und Mail-Versand via Resend. Die ganze Strecke dauert unter 500 Millisekunden und schließt drei klassische Angriffsklassen strukturell aus: SQL-Injection (keine Datenbank), Plugin-Lücken (kein Plugin-System), Server-Konfigurations-Fehler (kein Dauer-Server). Was bleibt — Input-Validierung, Rate-Limit, API-Schlüssel-Schutz — ist enger gefasst und besser handhabbar. Für Kanzlei-Sites die strukturell sicherste Form, ein funktionierendes Kontaktformular zu betreiben.
Quellen
- Next.js — Server Actions Documentation — abgerufen 2026-06-05
- Vercel — Functions Overview — abgerufen 2026-06-05
- Upstash — Redis Rate Limit Documentation — abgerufen 2026-06-05
- Resend — Email API Documentation — abgerufen 2026-06-05
- OWASP — Top 10 Web Application Security Risks — abgerufen 2026-06-05
Disclaimer: Beschreibung der tatsächlichen Kontaktformular-Architektur von fahoch2.de zum Zeitpunkt der Veröffentlichung. Konkrete Implementierungen variieren je nach Hosting-Plattform und Mail-Anbieter; das Prinzip „kein Dauer-Server, präzise abgegrenzte Funktionen" bleibt gleich.
Stand und rechtlicher Hinweis
- Erstveröffentlichung
- Autor
- Alexander Mock
- Lesezeit
- 8 Minuten
Allgemeine Information, keine individuelle Beratung. Dieser Artikel beschreibt steuer-, berufs- oder webrechtliche Grundsystematik zum oben genannten Stand. Er ist nicht mandantenspezifisch und ersetzt keine individuelle Rechts-, Steuer- oder Anlage-Beratung im Sinne § 2 Rechtsdienstleistungsgesetz (RDG), § 1 Steuerberatungsgesetz (StBerG) oder § 34d/f Gewerbeordnung (GewO). Vor jeder konkreten Entscheidung wenden Sie sich an einen zugelassenen Steuerberater, Rechtsanwalt oder die jeweils zuständige Behörde.
Zitate aus amtlichen Werken. Gesetzes-Texte, Verwaltungsanweisungen (BMF-Schreiben) und Gerichts-Entscheidungen (BFH, BGH, BVerfG, EuGH) sind nach § 5 Urheberrechtsgesetz gemeinfrei. Zitiert wird jeweils mit Aktenzeichen und Entscheidungs- bzw. Schreibens-Datum. Aktualität der Rechtslage bitte vor Bezugnahme gegen die jeweilige amtliche Veröffentlichung prüfen (gesetze-im-internet.de, bundesfinanzhof.de, bmf.bund.de).
Externe Quellen. Wo wir auf Studien, Branchenstatistiken oder Drittanbieter-Dokumente verweisen, ist das Abrufs-Datum jeweils beim Quellenverweis angegeben. Online-Inhalte können sich nach unserem Abruf geändert haben.
Haftung. Trotz sorgfältiger Recherche können Ungenauigkeiten oder Rechtsänderungen nach Veröffentlichung nicht ausgeschlossen werden. Eine Haftung für Schäden, die durch die Nutzung der Information ohne anwaltliche oder steuerberaterliche Gegenprüfung entstehen, ist ausgeschlossen — soweit gesetzlich zulässig.
Themen
Auch zu lesen
Code & Architektur
Was passiert bei npm run build? Die Next.js-Pipeline
Wenn ein Entwickler den Build als grün meldet, klingt das nach einer einzigen Aktion. Tatsächlich ist es eine Kette von einem halben Dutzend nacheinander laufender Schritte, von denen jeder einzelne den Build stoppen kann — und das ist gut so, weil genau diese Kette der zweite Schutzwall hinter den Pre-Commit-Hooks ist. Wer wissen will, was er kauft, wenn er eine gebaute Kanzlei-Website beauftragt, sollte verstehen, was hinter dem grünen Häkchen passiert. Dieser Artikel führt Schritt für Schritt durch die Pipeline einer Next.js-Kanzlei-Site, an konkreten Beispielen aus dem fahoch2.de-Repo — von der Typprüfung bis zum statisch generierten HTML.
Code & Architektur
Tour durch das Repo einer modernen Kanzlei-Website
Eine gebaute Kanzlei-Website ist kein einzelnes WordPress-Theme im Verzeichnis wp-content/themes — sie ist ein strukturiertes Repository, in dem jedes Verzeichnis eine bestimmte Aufgabe hat. Diese Trennung ist nicht nur Geschmacksache: Sie entscheidet, wie schnell ein Inhalts-Update möglich ist, wie wartbar die Site nach drei Jahren bleibt und wie wenig Reibung beim Übergeben an einen anderen Entwickler entsteht. Dieser Artikel ist eine Tour durch das echte fahoch2.de-Repository — was in welchem Ordner lebt, warum die Trennung so geschnitten ist, und worauf bei einer Kanzlei-Website besonders zu achten ist.
Code & Architektur
Statisches Rendering (SSG) vs. WordPress-Datenbank
Eine WordPress-Seite baut jede Seite bei jedem Aufruf neu zusammen — aus einer Datenbank, über PHP, im Moment des Besuchs. Eine statisch gerenderte Seite (SSG) ist dagegen schon fertig: vorgebaut zu HTML, ausgeliefert ohne Datenbank, ohne serverseitige Programm-Logik im Anfrage-Pfad. Dieser Unterschied klingt technisch, hat aber zwei sehr konkrete Folgen für eine Kanzlei: deutlich weniger Angriffsfläche und spürbar mehr Tempo. Dieser Artikel erklärt das Prinzip — und sagt ehrlich, wo dynamisches Rendering trotzdem seinen Platz hat.
Wenn Sie das in Ruhe besprechen möchten
Lassen Sie uns 30 Minuten zur Außen-Sicht Ihrer Kanzlei sprechen.
Erst gratis-Vorprüfung über das URL-Tool — dann entscheiden Sie, ob ein 890-€-Tiefen-Audit für Sie Sinn ergibt.