// the human behind cslabs.dev

Über mich

Christian Schwarzer

Programmieren war bei mir nie eine Berufswahl, sondern eine Leidenschaft, die mich seit meiner Kindheit nicht mehr losgelassen hat. Mit 9 Jahren habe ich meine ersten Zeilen Code auf einem alten Schneider Euro PC geschrieben – MS-DOS 3.33A, GW-BASIC, ein blinkender Cursor und die Faszination, dass ein Haufen Text die Maschine tatsächlich dazu bringt, das zu tun, was ich ihr sage. Diese Faszination ist bis heute geblieben.

Aus dem Cursor auf einem Monochrom-Monitor wurden über die Jahre Compiler, Datenbanken, Server und Grafikpipelines. Der rote Faden ist immer derselbe geblieben: Ich will verstehen, was unter der Oberfläche passiert. Nicht nur, dass ein Framework etwas löst, sondern wie – und ob es sich nicht doch schlanker, schneller und nachvollziehbarer bauen lässt.

Ich habe AuDHD. Das ist auch einer der Gründe, warum ich in dem, was ich tue, richtig gut bin: Wenn ich in ein Problem eintauche, versinke ich vollständig darin – Stunden vergehen wie Minuten, während ich Architekturen durchdenke, Bugs jage oder eine neue Sprache lerne. Diese Mischung aus Hyperfokus und einem Blick fürs Detail und für Muster ist für mich kein Hindernis, sondern mein Werkzeug.

Genauso wichtig ist mir die andere Seite der Medaille: Software soll benutzbar sein. Ein Programm, das technisch brillant ist, aber niemand bedienen kann, hat sein Ziel verfehlt. Deshalb baue ich Oberflächen und Tools so, dass sie sich erklären, statt erklärt werden zu müssen – egal ob Desktop-Anwendung, Web-Interface oder Kommandozeile.

Neben Systemnahem und KI-Themen gehört die klassische Webentwicklung fest zu meinem Alltag: HTML, CSS, JavaScript, PHP und MySQL. Vom Datenbankschema über die serverseitige Logik bis zum Frontend baue ich komplette Anwendungen – inklusive Login-Systemen, Admin-Bereichen, Datei-Uploads und dem Sicherheitsteil, der bei alldem dazugehört: Prepared Statements, CSRF-Schutz, Passwort-Hashing, saubere Rechtetrennung.

Das beste Beispiel dafür ist diese Seite selbst: cslabs.dev läuft auf handgeschriebenem PHP mit einer MySQL-Datenbank im Hintergrund – kein CMS, kein Baukasten, kein fremdes Theme. Snippets, Downloads und Einstellungen pflege ich über einen eigenen Admin-Bereich, den Rest erledigt ein schlanker Router.

Bei den Betriebssystemen lege ich mich nicht fest: Linux und Windows sind mir beide vertraut. Unter Linux bin ich auf der Kommandozeile zu Hause – Dienste einrichten, Webserver konfigurieren, Rechte und Zugriffe sauber setzen, Systeme absichern und am Laufen halten. Unter Windows entwickle ich native Anwendungen, automatisiere wiederkehrende Abläufe und kenne die Eigenheiten, die einem dort begegnen. Diese Seite läuft übrigens auf einem Linux-Server, den ich selbst administriere.

Ein Teil meiner Ausbildung fand nicht in einem Kursraum statt, sondern in den 90ern im IRC – lange bevor „IT-Sicherheit“ ein Studienfach war. Man hat damals verstanden, wie Systeme funktionieren, indem man geschaut hat, wo sie nachgeben. Diese Perspektive ist geblieben: Ich kenne die gängigen Angriffsmuster nicht aus einem Lehrbuch, sondern weil ich sie seit Jahrzehnten aus beiden Richtungen sehe. Deshalb baue ich Software so, dass diese Fragen gar nicht erst aufkommen. Sicherheit ist bei mir nichts, was am Ende noch draufgeschraubt wird.

Was am Ende bleibt: Ich mag Projekte, bei denen es etwas zu knacken gibt. Performance-Probleme, verworrene Altsysteme, Ideen, von denen alle sagen "das geht so nicht". Genau da fängt es für mich an, Spaß zu machen.

Tech-Stack

Rust Python Java PHP MySQL / MariaDB SQL HTML5 CSS3 JavaScript Delphi / Lazarus Pascal Batch GW-BASIC / QBasic Git Linux Windows Serveradministration Anwendungssicherheit

Angriffe verstehen, um dagegen zu bauen

SQL-Injection, Brute-Force, DDoS und Flooding, XSS, CSRF, Session-Hijacking – diese Angriffe sind für mich keine Stichworte aus einem Lehrbuch. Ich habe seit den 90ern verstanden, wie sie technisch funktionieren, und kann deshalb gezielt die Gegenmaßnahme wählen, die tatsächlich greift – statt pauschal irgendeine Sicherheitsbibliothek einzubinden und zu hoffen.

Wer nur die Theorie kennt, übersieht die Lücke. Jede Zeile, die ich schreibe, ist gegen diese Muster abgesichert – auch diese Seite hier.

SQL-Injection
Ausschließlich Prepared Statements, keine zusammengebauten Queries, getrennte Datenbankrechte
Brute-Force & Credential Stuffing
Fehlversuche zählen, Sperrzeiten, starke Passwortregeln, Hashing mit Argon2/bcrypt statt MD5
DDoS, Flooding & Ping-Fluten
Rate-Limits, automatische IP-Sperren, schlanke Endpunkte, Caching und sauber gesetzte Timeouts
XSS & Code-Einschleusung
Konsequentes Escaping jeder Ausgabe, restriktive Content-Security-Policy, keine fremden Skripte
CSRF & Session-Hijacking
Token bei jedem Formular, HttpOnly- und SameSite-Cookies, Session-ID nach dem Login erneuern
Schadcode über Uploads
Prüfung des echten Dateityps statt der Endung, Zufallsnamen, Ausführung im Upload-Ordner unterbunden
Path Traversal & Directory Listing
Pfade serverseitig normalisiert, feste Zuordnung statt Nutzereingaben, Verzeichnisse gesperrt
Social Engineering & Datenabfluss
Datensparsamkeit, klare Rechtetrennung, keine externen Dienste, verschlüsselte Übertragung

Mein Weg

Mit 9 Jahren

Erste Gehversuche auf einem Schneider Euro PC – MS-DOS 3.33A und GW-BASIC waren mein Einstieg in die Softwareentwicklung.

Die QBasic-Jahre

Der nächste Schritt: QBasic. Komfortabler, mächtiger – und der Punkt, an dem aus Neugier echtes Programmieren-Können wurde.

Ab ins Web

HTML, CSS und JavaScript kamen dazu, kurz darauf PHP und MySQL. Seitdem baue ich dynamische Seiten und Web-Anwendungen komplett selbst – Frontend, Backend und Datenbank aus einer Hand.

Daten & Backend

Datenbankdesign, normalisierte Schemata, Prepared Statements und durchdachte Queries – dazu Login-Systeme, Admin-Panels und alles, was eine Anwendung sicher und wartbar macht.

Breites Fundament

Über die Jahre kamen Delphi/Lazarus, Java, Pascal und Batch-Programmierung dazu – ein solides, vielseitiges Repertoire für ganz unterschiedliche Aufgaben.

Schule des IRC

In den 90ern gelernt, wie Systeme brechen – heute die Grundlage dafür, wie ich sie baue. Sichere Eingaben, saubere Rechte, keine offenen Flanken.

Linux & Windows

Beide Welten gehören zum Alltag: Serverbetrieb, Shell und Konfiguration unter Linux, native Entwicklung und Automatisierung unter Windows.

Heute

Mein Fokus liegt auf Rust und Python – maximale Performance auf der einen, maximale Geschwindigkeit beim Umsetzen von Ideen auf der anderen Seite. Web-Projekte setze ich weiterhin mit PHP und MySQL um.