fix(release): de webbundel raakte .htaccess en security.txt kwijt (#1888) #1903
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1903
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/webbundel-dotfile-sweep"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er stuk was
De dotfile-sweep uit #1888 haalt
.DS_Storeuitbuild/weben hield als "bewust meegenomen" alleen aan watreleaseArtefactennoemt. Die lijst beschrijft wat de inpakstap er zelf bij legt — niet wat de bundel bevat. De twee dotfiles die er wél horen komen ergens anders vandaan:flutter build webkopieert ze uitweb/.Weg waren dus
build/web/.htaccess(de header-vorm-harding van #849) enbuild/web/.well-known/security.txt(het meldadres uit RFC 9116).De release van v0.5.0 viel hierop om in fase 1:
build/web/.htaccess is missing. Het meldadres was nergens gedekt en verdween stil. De live site is niet geraakt — de release brak af vóór fase 3, enocideck.librekat.nl/.well-known/security.txtgeeft nog 200.Waarom het langs de poorten kwam
security_txt_test,web_htaccess_headers_test), het artefact niet. Alleen.htaccesshad ook een controle op de gebouwde bundel, dus er ging één lampje branden in plaats van twee.make check-webdraait niet per PR (alleencheck-fulllokaal en op de tag). De per-PR-test die #1888 wél toevoegde, draaide op een met de hand gebouwde bundel die precies de bestanden miste die de wijziging brak.Wat er nu staat
Door constructie.
bewusteDotfilesleestweb/in plaats van een lijst — een dotfile die daar bij komt overleeft vanzelf.nietUitleverenblijft de enige plek waar "bewust niet uitleveren" staat en wint van die herkomst (web/.DS_Storebestaat op een Mac ook).Een afgeleide poort in plaats van een vastgepinde. Er is niet
security.txtnaast.htaccessgezet — dan komt dezelfde fout één bestand later terug.check_web_hardening.dartloopt nuweb/langs en eist dat élke ingang de bundel haalt, en importeertnietUitleverenin plaats van hem te herhalen.Naar links geschoven.
pack_web_release_test.dartspiegelt de échteweb/-boom in een nagebouwde bundel. Dat zet de invariant op de per-PR-poort.Toetsing
de beveiligingsheaders horen met de bundel mee (#849)), daarna groen.web/.well-known/security.txt hoort de bundel te halen), na herstel groen. #1888 zou dus niet groen zijn gemerged..well-known/security.txtén op een verdwenenfavicon.png, groen na herstel.make check-fullgroen (inclusiefcheck-secrets,sast,check-web).Bewaker
Dit raakt een publieke belofte: het meldadres uit RFC 9116 werd niet uitgeleverd. De richting is herstellend — de belofte wordt weer waargemaakt en
docs/CHECKS.mdbeschrijft voortaan wat er werkelijk bewaakt wordt. Er is geen afweging gemaakt waarbij een waarde het aflegde. Formaat, opslag, afhankelijkheden en uitgaand verkeer blijven ongemoeid.Wat hierna nog open staat
Een wijziging aan
tool/pack_web_release.dartziet per PR nog steeds geen échteflutter build web. Voorstel voor een vervolg-PR: een padgefilterdeweb-gate-workflow naar het model vanlinux-build.yml, oppull_request+push: main+workflow_dispatch, met een test die dat padfilter bewaakt (zoalsnative_build_triggers_test.dartdat voor de platformbuilds doet).Co-Authored-By: Claude Opus 5 noreply@anthropic.com