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

+16 -13
View File
@@ -1,18 +1,21 @@
MIT License
Copyright (c) 2026 olli1986
Copyright (c) 2026 Oliver Braasch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+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.