112 lines
3.7 KiB
Markdown
112 lines
3.7 KiB
Markdown
# 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`
|
|
|
|
```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](LICENSE).
|
|
|
|
---
|
|
|
|
## Hinweis
|
|
|
|
Entstanden als Projekt von Oliver Braasch, mit Unterstützung von Claude
|
|
(Anthropic) bei Entwurf, Umsetzung und Dokumentation.
|