3.9 KiB
Next Steps
Issue Drafts (Ready for Gitea/GitHub)
-
#TODO Enable strict types + typed signatures
-
Aufwand:
M -
Labels:
quality,refactor -
Ziel: Konsistente Typen und weniger implizite Typfehler.
-
Akzeptanzkriterien:
-
Alle PHP-Dateien starten mit
declare(strict_types=1);(wo kompatibel). -
Oeffentliche Funktionen erhalten Rueckgabe-/Parameter-Typen.
-
Inkompatible Stellen sind dokumentiert oder angepasst.
-
#TODO Define unified error strategy
-
Aufwand:
M -
Labels:
quality,api -
Ziel: Einheitliches Verhalten bei Fehlern.
-
Akzeptanzkriterien:
-
ADR/kurze Doku: wann
null/false, wann Exception. -
sql.php,link-meta.php,troy-api.phpfolgen derselben Strategie. -
Mindestens 3 Beispiele in
README.mddokumentiert. -
#TODO Expand README with runnable examples
-
Aufwand:
S -
Labels:
docs -
Ziel: Schnellere Nutzung ohne Code-Lesen.
-
Akzeptanzkriterien:
-
Pro Modul mindestens 1 kurzes Copy/Paste-Beispiel.
-
Abschnitt "Konfiguration" mit
secret.php-Feldern vorhanden. -
Abschnitt "Known limitations" ergaenzt.
-
#TODO Complete
secret.php.example -
Aufwand:
S -
Labels:
docs,config -
Ziel: Vollstaendige Vorlagedatei fuer lokale Setups.
-
Akzeptanzkriterien:
-
Alle erwarteten Variablen aus
sql.php,mail.php,troy-api.phpenthalten. -
Jede Variable hat kurzen Kommentar.
-
Dateiformat entspricht direkt nutzbarer Vorlage.
5) Remove @ error suppression incrementally
- Aufwand:
M - Labels:
quality,safety - Ziel: Fehler sichtbar und kontrolliert behandeln.
- Akzeptanzkriterien:
- Alle
@-Operatoren inventarisiert. - Ersetzungen mit explizitem Error-Handling umgesetzt.
- Keine neue
@-Verwendung in geaenderten Dateien.
2) Sicherheit und Robustheit
6) Harden URL fetching against SSRF
- Aufwand:
M - Labels:
security,network - Akzeptanzkriterien:
- Private/loopback ranges werden blockiert.
- Optionales Host-Allowlist-Feature vorhanden.
- Tests fuer geblockte und erlaubte Ziele vorhanden.
7) Prevent mail header injection
- Aufwand:
S - Labels:
security,mail - Akzeptanzkriterien:
- Empfaenger/Betreff/From werden validiert.
- CRLF-Injection wird abgefangen.
- Fehlerfall ist dokumentiert.
8) Centralize HTTP limits (timeout/redirect/size)
- Aufwand:
S - Labels:
robustness,network - Akzeptanzkriterien:
- Eine zentrale Konfiguration fuer HTTP-Limits.
og.phpundlink-meta.phpnutzen dieselben Limits.- Default-Werte sind in README dokumentiert.
9) Improve SQL error handling + logging
- Aufwand:
M - Labels:
sql,robustness - Akzeptanzkriterien:
prepare()/execute()-Fehler werden explizit behandelt.- Fehler enthalten Query-Kontext ohne Secrets.
- Verhalten entspricht der definierten Error-Strategie.
10) Replace fragile HTML allowlist sanitizer
- Aufwand:
M - Labels:
security,string - Akzeptanzkriterien:
onlySimpleHTML()wird durch robusteren Ansatz ersetzt.- Erlaubte Tags sind konfigurierbar dokumentiert.
- Regression-Tests fuer typische Eingaben vorhanden.
3) Code-Qualitaet
- Sammel-Issue: Naming-Konvention, SQL-Binding-Refactor, Legacy-Markierung, Markdown-Konsolidierung, klare Modulgrenzen.
- Aufwand:
L - Empfehlung: in 3-5 Unter-Issues aufteilen.
4) Tests und Tooling
11) Bootstrap test/tooling baseline
- Aufwand:
M - Labels:
testing,ci - Akzeptanzkriterien:
- PHPUnit laeuft lokal mit ersten Smoke-Tests.
- PHPStan/Psalm auf niedriger Stufe integriert.
- CI fuehrt mindestens Lint + Tests bei Push aus.
5) Mittelfristige Architektur
12) Prepare Composer + namespace migration path
- Aufwand:
L - Labels:
architecture - Akzeptanzkriterien:
- Vorschlag fuer Zielstruktur (
src/, namespaces, autoload). - Migrationsplan fuer prozedurale Helfer zu Klassen.
- Konfigurationsobjekt und HTTP-Adapter als Zielbild beschrieben.
Empfohlene Reihenfolge
#1bis#5(kurzfristig, hoher Hebel)#6bis#10(Sicherheit/Robustheit)#11(Tests + CI als Guardrail)#12und Sammel-Issue aus Abschnitt 3