Von riskanter Bastel-Software
zur sicheren Wettkampf-Plattform

Ein gemeinnütziger Sportverband organisiert jedes Jahr Wettkämpfe für Kinder und Jugendliche — über eine Vereins- und Wettkampfverwaltung, die seit rund zehn Jahren von einer einzelnen ehrenamtlichen Person gepflegt wurde. Sie funktionierte, verarbeitete aber sensible Daten von Minderjährigen über teils gravierende Sicherheitslücken. CloudCore IT hat das System in 8 Wochen komplett neu aufgebaut — die komplette Fachlogik übernommen, aber technisch von Grund auf sauber und abgesichert.

Branche: Vereins-/Verbandswesen (anonymisiert)
Umfang: 45+ angeschlossene Vereine
Dauer: 8 Wochen
Datenverlust: 0
8
Sicherheitslücken geschlossen
45+
Vereine verwaltet
8 Wo.
Projektdauer
4
Rollen sauber abgebildet
0
Datensätze verloren

1Ausgangslage: Ein bewährtes System mit gefährlichen Altlasten

Der Verband koordiniert jährliche Wettkämpfe, bei denen Vereine ihre Nachwuchsteams — gestaffelt nach Leistungsstufen — melden, Wertungsrichter:innen die Leistungen bepunkten und am Ende öffentliche Ranglisten entstehen. Die dafür genutzte Software stammte aus den Jahren 2014–2018, war ein reines Ein-Personen-Projekt ohne Versionskontrolle und lief bis zuletzt produktiv — inklusive aktueller Anmeldedaten der laufenden Saison.

Eine unabhängige Code- und Sicherheitsanalyse vor Projektstart zeigte: Das System funktionierte äußerlich zuverlässig, war innen aber ein erhebliches Risiko — insbesondere weil es personenbezogene Daten von Kindern verarbeitet.

Vorher — Befund
  • Gespeichertes XSS über Teilnehmernamen — Angriffsfläche bis in Admin-Sessions
  • Datenbank-Zugangsdaten im Klartext im Code
  • Ca. 90% aller Datenbankzugriffe ohne Prepared Statements
  • Kein CSRF-Schutz bei kritischen Aktionen (z.B. Team löschen)
  • "Passwort vergessen"-Ablauf technisch defekt
  • Kernlogik 3–4× dupliziert — jeder Fix musste mehrfach gemacht werden
  • Keine Protokollierung, wer wann welche Wertung geändert hat
  • Eine Tabelle mit über 70 Spalten für Stamm-, Melde- und Wertungsdaten
Nachher — Ergebnis
  • Durchgängiges HTML-Escaping — strukturell kein XSS mehr möglich
  • Zugangsdaten ausschließlich über `.env`, nie im Code
  • 100% Prepared Statements (PDO) für sämtliche Datenbankzugriffe
  • CSRF-Schutz zentral im Router auf jedem POST-Request erzwungen
  • Passwort-Aktivierung/-Reset über zeitlich begrenzten Einmal-Link
  • Eine einzige, saubere Codebasis statt paralleler Kopien
  • Lückenloses Audit-Log für alle sicherheitsrelevanten Aktionen
  • Normalisiertes Datenmodell (Vereine, Starter, Teams, Wertungen getrennt)

2Analyse & Entscheidung: Neu bauen statt flicken

Die erste Frage war nicht technischer, sondern strategischer Natur: Lässt sich das bestehende System gezielt absichern, oder braucht es einen Neuanfang? Angesichts der strukturellen Probleme — Code-Duplizierung, fehlende Trennung von Logik und Darstellung, kein einziger automatisierter Test — fiel die Entscheidung eindeutig auf eine vollständige Neuentwicklung. Wiederverwendet wurde dabei bewusst kein einziger Codebestandteil, wohl aber das komplette fachliche Wissen: das Punktesystem, die Stufen-Gewichtung, der Leistungskatalog und das Rollenmodell.

Eine zweite, ebenso wichtige Entscheidung betraf die Architektur der Neuentwicklung selbst:

KriteriumAltsystemNeuentwicklung
Datenbankzugriff Gemischt PDO/mysqli, manuelles Escaping Ausschließlich PDO mit Prepared Statements
Ausgabe (HTML) Escaping nur in 3 von 34 Dateien Zentrale Escaping-Funktion in jedem Template
Zugriffskontrolle Rollenprüfung kopiert in 20+ Dateien Zentrale Middleware, Rollen aus der Datenbank
Nachvollziehbarkeit Ein Zeitstempel, keine Historie Vollständiges Audit-Log je Aktion
Angriffsfläche Groß, unstrukturiert gewachsen Bewusst minimal gehalten
Bewusst kein großes Framework

Für den tatsächlichen Funktionsumfang — Login, Rollen, Vereins-/Starterverwaltung, Wettkampf-/Team-/Wertungsabwicklung — wäre ein volles Framework wie Symfony oder Laravel deutlich mehr, als gebraucht wird. Entschieden wurde stattdessen für einen schlanken, selbstgeschriebenen Router (rund 80 Zeilen), PDO direkt und PHP-Templates mit konsequentem Escaping. Das hält die Angriffsfläche klein und jede Zeile Code nachvollziehbar — ein Framework-Wechsel bliebe bei künftigem Wachstum jederzeit möglich, ohne die aufgebaute Datenbank oder Fachlogik zu verwerfen.

3Umsetzung: 8 Wochen, von der Fachlogik bis zum Go-Live

Da das Altsystem während der laufenden Saison weiterlief, entstand die Neuentwicklung parallel und wurde erst zum Saisonwechsel produktiv geschaltet — kein Druck durch einen harten Umstiegstermin mitten im Wettkampfbetrieb.

W1–2
Woche 1–2 — Fachliche Analyse & Sicherheitsaudit

Punktesystem, Rollenmodell und Datenfelder dokumentiert

Vollständige Analyse des Altsystems: Punkteberechnung je Leistung, Stufen-Gewichtung, die vier Nutzerrollen, sämtliche Datenfelder und Validierungsregeln wurden als fachliche Spezifikation festgehalten — unabhängig vom bestehenden, nicht wiederverwendbaren Code. Parallel dazu ein Sicherheitsaudit, das alle kritischen Lücken im Altsystem benannte.

✓ Fachlogik & Risiken vollständig dokumentiert
W3–4
Woche 3–4 — Datenmodell & Sicherheitsfundament

Normalisiertes Schema, Auth, Rollen, CSRF, Router

Neues, normalisiertes Datenbankschema (getrennte Tabellen für Vereine, Starter, Wettkämpfe, Teams, Wertungen statt einer 70-Spalten-Tabelle). Aufbau des technischen Fundaments: eigener Router, Session- und CSRF-Schutz, Passwort-Hashing mit automatischem Rehashing, Rate-Limiting auf Login und Passwort-Reset.

✓ Sicherheitsfundament steht, Rollen datenbankbasiert
W5–6
Woche 5–6 — Vereins-, Starter- und Wettkampfverwaltung

Fachprozesse für Vereine, Admin und Wettkampfleitung

Verwaltung von Vereinen und Startern, Wettkampfanlage inkl. Ausschreibung-Upload (mit echter Dateityp-Prüfung, Ablage außerhalb des Webroots) und automatischem Mailversand an alle Vereinsbetreuer:innen. Team-Meldung durch die Vereine inklusive der kompletten Melderegeln aus dem Altsystem.

✓ Meldeschluss jetzt serverseitig durchgesetzt
W7
Woche 7 — Wertungserfassung & Ergebnisse

Live-Fortschritts-Dashboard und Ranglisten mit Excel-Export

Wertungserfassung für Wertungsrichter:innen mit Ampel-Status je Team, Live-Fortschritts-Dashboard für die Wettkampfleitung während des laufenden Wertungstags, sowie automatische Ergebnisberechnung mit öffentlichen Ranglisten und Excel-Export je Wettkampf.

✓ Jede Korrektur lückenlos im Audit-Log
W8
Woche 8 — Migration, Schulung & Go-Live

Umstieg zum Saisonwechsel, ohne Datenverlust

Übernahme der Bestandsdaten (Vereine, Starter-Stammdaten) in das neue Schema, Einrichtung des ersten Admin-Zugangs, kurze Einschulung für Admin, Wettkampfleitung und Wertungsrichter:innen anhand eines eigens erstellten, nicht-technischen Benutzerhandbuchs. Altsystem danach endgültig abgeschaltet.

✓ Produktiv seit dem Saisonstart · 0 Datenverlust
Technisch eingesetzt

PHP 8.4 · PDO/MySQL (MariaDB) mit ausschließlich Prepared Statements · eigener schlanker Router · PHPMailer für SMTP-Mailversand · PhpSpreadsheet für Excel-Export · zentrales CSRF- & Session-Fundament · Audit-Log · bcrypt-Passwort-Hashing mit automatischem Rehashing · Security-Header (CSP, HSTS, X-Frame-Options)

4Ergebnis: Was sich konkret verändert hat

Seit dem Saisonstart läuft die Plattform im produktiven Wettkampfbetrieb — Anmeldung, Wertung und Ergebnisermittlung laufen vollständig über das neue System, ohne dass ein einziger Datensatz aus dem Altsystem verloren ging.

Was Vereine und Wertungsrichter:innen täglich spüren

  • Team-Meldung mit klarer Führung durch die Melderegeln statt Rätselraten im alten Formular
  • Wertungserfassung mit sofortiger Kontrolle über die Ampel-Anzeige je Team
  • Kein Passwort wird je per E-Mail verschickt — Aktivierung und Reset laufen über einen sicheren Link
  • Eigenes Passwort jederzeit selbst änderbar unter „Mein Konto"

Was Wettkampfleitung und Verband spüren

  • Live-Dashboard zeigt während der Wertung den tatsächlichen Fortschritt aller Teams
  • Öffentliche Ranglisten inklusive Excel-Export, sobald ein Wettkampf abgeschlossen ist
  • Vollständiges Audit-Log: Wer hat wann welche Wertung angelegt, geändert oder korrigiert
  • Keine Sorge mehr um ungeschützt gespeicherte Daten von jugendlichen Sportler:innen
  • Ausführliches, nicht-technisches Benutzerhandbuch für alle vier Rollen

„Wir wussten, dass unsere alte Lösung in die Jahre gekommen war — wie viel dabei tatsächlich auf dem Spiel stand, war uns vorher nicht bewusst. Jetzt läuft der komplette Wettkampf digital, sicher und nachvollziehbar, und wir müssen uns um nichts mehr sorgen."

— Wettkampfleitung, anonymisierter Kunde (gemeinnütziger Sportverband)

5Lessons Learned & Empfehlungen

Dieser Fall ist kein Einzelfall — viele Vereine und Verbände betreiben seit Jahren gewachsene Individualsoftware, die einmal von einer engagierten Einzelperson gebaut wurde und seither "einfach läuft". Eine Neuentwicklung lohnt sich besonders, wenn folgende Punkte zutreffen:

  • Die Software wird von genau einer Person verstanden und gepflegt
  • Es gibt keine Versionskontrolle, keine Tests, keine Dokumentation
  • Personenbezogene oder besonders schützenswerte Daten sind betroffen (z.B. von Minderjährigen)
  • Änderungen erfordern regelmäßig Anpassungen an mehreren Kopien derselben Logik
  • Niemand kann mit Sicherheit sagen, wer wann welche Daten geändert hat
Wichtigste Erfolgsfaktoren

Fachlogik statt Code übernehmen · Parallelbetrieb bis zum Saisonwechsel, kein erzwungener Stichtag · Bewusst schlanke Architektur statt Overengineering · Sicherheit von Anfang an statt nachträglich · Verständliches Handbuch für alle Rollen statt reiner Technik-Doku

6Ähnliches Vorhaben? Sprechen wir.

Ob Vereinsverwaltung, Wettkampf- oder Mitgliederverwaltung, oder eine andere gewachsene Individuallösung, die niemand mehr anfassen will — jede Neuentwicklung beginnt mit einem kostenlosen Analysegespräch. Ich zeige Ihnen, was in Ihrer Situation sinnvoll ist, was es kostet und wie lange es dauert.

Kostenloses Erstgespräch anfragen Alle Leistungen ansehen