Files
2026-09-18 10:33:51 +02:00

3.7 KiB

Software — Übersichtsseite

Kleine, sicherheitsbewusste Startseite für software.obraasch.de. Listet automatisch alle Werkzeuge auf, die dort in einem Unterordner mit einer tool.json liegen — inklusive Vorlagen für Impressum und Datenschutzerklärung sowie Hinweisen zur Absicherung des Webservers.

Live: https://software.obraasch.de/


Enthaltene Dateien

Datei Zweck
index.php Die eigentliche Übersichtsseite, gehört ins Wurzelverzeichnis der Domain
impressum.html Vorlage für das Impressum (§ 5 DDG)
datenschutz.html Vorlage für die Datenschutzerklärung
webserver-sicherheit.md Fertige nginx- und Apache-Konfiguration für Sicherheits-Header
tool.json.beispiel Beispiel für die Metadatendatei eines einzelnen Werkzeugs

Funktionsweise von index.php

Beim Aufruf durchsucht die Seite ihr eigenes Verzeichnis nach Unterordnern, die eine Datei tool.json enthalten. Ein Ordner ohne diese Datei taucht nicht auf — so bestimmt man selbst, was öffentlich sichtbar wird.

DOMAIN/
  ├── index.php
  ├── impressum.html
  ├── datenschutz.html
  └── json-workbench/
        ├── tool.json       <- macht den Ordner sichtbar
        ├── json-workbench.html
        └── lib/

Format von tool.json

{
  "name": "JSON Studio & MariaDB Workbench",
  "beschreibung": "Kurzbeschreibung in einem Satz.",
  "einstieg": "json-workbench.html",
  "repository": "https://git.obraasch.de/olli1986/JSON-Studio",
  "repositoryName": "Quellcode (Gitea)",
  "version": "3.1",
  "lizenz": "MIT",
  "stand": "2026-09-17",
  "tags": ["JSON", "CSV", "Excel"],
  "sichtbar": true
}

Nur name und einstieg sind wirklich nötig, alles andere ist optional. sichtbar: false blendet einen Ordner aus, ohne die Datei zu löschen.


Sicherheitskonzept

  • Die Seite verarbeitet bewusst keinerlei Nutzereingaben — weder $_GET noch $_POST noch Cookies. Damit entfällt die übliche Angriffsfläche für Injection.
  • Es wird nichts aus einem von außen beeinflussbaren Pfad zusammengesetzt. Gelesen wird ausschließlich das eigene Verzeichnis; Pfade aus tool.json dürfen den jeweiligen Tool-Ordner nicht verlassen.
  • Inhalte aus tool.json werden trotzdem streng geprüft und bei der Ausgabe vollständig maskiert. Selbst wenn dort HTML oder Skriptcode stünde, würde er als reiner Text angezeigt.
  • Externe Links (z. B. das Repository eines Werkzeugs) werden nur akzeptiert, wenn sie mit http:// oder https:// beginnen.
  • Die Seite kommt vollständig ohne JavaScript aus. Die Content-Security-Policy verbietet Skripte deshalb komplett.

Getestet unter anderem mit <script>-Tags, Event-Handlern und javascript:-Links im Namen bzw. Repository-Feld einer präparierten tool.json, sowie mit ../-Pfaden als Einstiegsdatei — alle Fälle werden abgefangen bzw. maskiert ausgegeben.

Voraussetzung: PHP 8.0 oder neuer.


Rechtliches beim öffentlichen Betrieb

In Deutschland braucht ein öffentlich erreichbares Angebot ein Impressum (§ 5 DDG) und eine Datenschutzerklärung. impressum.html und datenschutz.html sind Vorlagen mit Platzhaltern, die vor der Veröffentlichung ausgefüllt und geprüft werden müssen. Sie sind nach bestem Wissen erstellt, ersetzen aber keine Rechtsberatung.

webserver-sicherheit.md enthält passende nginx- und Apache-Konfiguration für Sicherheits-Header, das Sperren versteckter Dateien und Hinweise zu HSTS, PHP-Fehlerausgabe und Backup-Dateien im Web-Verzeichnis.


Lizenz

Dieses Projekt steht unter der MIT-Lizenz, siehe LICENSE.


Hinweis

Entstanden als Projekt von Oliver Braasch, mit Unterstützung von Claude (Anthropic) bei Entwurf, Umsetzung und Dokumentation.