Dateien nach "/" hochladen

This commit is contained in:
Oliver Braasch committed 2026-09-18 10:15:05 +02:00
1 parent 6ddbdc0ae5
commit dccee3694a
2 files changed
+126 -14

No files matched your search

+110 -1
View File
@@ -1,2 +1,111 @@
# Software--bersicht
# software.obraasch.de — Ü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.
```
software.obraasch.de/
├── 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.