diff --git a/LICENSE b/LICENSE index 753e191..659a456 100644 --- a/LICENSE +++ b/LICENSE @@ -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. diff --git a/README.md b/README.md index de8c242..b7dd0a1 100644 --- a/README.md +++ b/README.md @@ -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 `