Open de Jitsi-naad in de browser (#2544) #2587

Merged
brenno merged 1 commit from feat/callbewijs-web-2544 into main 2026-10-25 20:09:29 +00:00
Owner

Samenvatting

  • De web-preflight liep vast op InternetAddress.tryParse (dart:io bestaat in de browser niet). Dezelfde hostclassificatie als NetGuard staat nu lexicaal in literal_loopback.dart.
  • config.js en de XMPP-websocket gaan via de browser: https/wss, platte http/ws alleen naar een letterlijk loopback-adres. De pagina-CSP krijgt wss: (niet ws:) en camera, microfoon en schermdeling alleen als (self) — de browser vraagt nog steeds zelf.
  • Een echte tweepersoonscall op een uitgebrachte webbuild is hiermee niet bewezen. #2544 blijft open. De productmatrix houdt de browserclient op niet getest.

Bewaker

Raakt uitgaand verkeer en een publieke belofte: de gebruikersgids zei dat een browserbewijs bewust ontbreekt omdat een tab geen certificaat kan pinnen.

Veiligheid gaat voor. Pinnen kan in een browser niet; de grens is daarom de pagina (CSP, CORS) plus de schemegrens in de app. De module blijft standaard uit. De gebruiker wijst de server aan; er komt geen vaste derde partij bij. We claimen de tweepersoonsproef niet.

Van gedachten veranderen als een webbuild wél een certificaat kan pinnen, of als de proef laat zien dat de naad niet werkt — dan weer fail-closed.

Poort

Lokaal groen op c3aaa339ed6f7e92c6cf69dd676ca15f199009d6 (de commit van deze PR; daarna niets meer gewijzigd):

  • make check (exit 0)
  • make check-secrets (gitleaks + trufflehog, --no-verification, geen vondsten)
  • make sast (semgrep lokaal, 0 findings; de nieuwe bestanden apart nog eens, ook 0)
  • flutter build web --release --no-web-resources-cdn --csp en dart run tool/check_web_hardening.dart: Web hardening OK

make check-full is niet in zijn geheel gedraaid (geen licentie-/SBOM-/deps-ronde). pubspec.yaml is niet gewijzigd. DAST/ZAP niet gedraaid.

Een VM-test kan package:web niet laden. De schemegrens is daarom een pure functie met tests; de socket zelf zit in de dekkingsbasislijn, met de reden erbij. De driver voor de latere proef staat in testbed/jitsi-meet/probe/webcall.js.

## Samenvatting - De web-preflight liep vast op `InternetAddress.tryParse` (`dart:io` bestaat in de browser niet). Dezelfde hostclassificatie als NetGuard staat nu lexicaal in `literal_loopback.dart`. - `config.js` en de XMPP-websocket gaan via de browser: `https`/`wss`, platte `http`/`ws` alleen naar een letterlijk loopback-adres. De pagina-CSP krijgt `wss:` (niet `ws:`) en camera, microfoon en schermdeling alleen als `(self)` — de browser vraagt nog steeds zelf. - Een echte tweepersoonscall op een uitgebrachte webbuild is hiermee niet bewezen. #2544 blijft open. De productmatrix houdt de browserclient op `niet getest`. ## Bewaker Raakt uitgaand verkeer en een publieke belofte: de gebruikersgids zei dat een browserbewijs bewust ontbreekt omdat een tab geen certificaat kan pinnen. Veiligheid gaat voor. Pinnen kan in een browser niet; de grens is daarom de pagina (CSP, CORS) plus de schemegrens in de app. De module blijft standaard uit. De gebruiker wijst de server aan; er komt geen vaste derde partij bij. We claimen de tweepersoonsproef niet. Van gedachten veranderen als een webbuild wél een certificaat kan pinnen, of als de proef laat zien dat de naad niet werkt — dan weer fail-closed. ## Poort Lokaal groen op `c3aaa339ed6f7e92c6cf69dd676ca15f199009d6` (de commit van deze PR; daarna niets meer gewijzigd): - `make check` (exit 0) - `make check-secrets` (gitleaks + trufflehog, `--no-verification`, geen vondsten) - `make sast` (semgrep lokaal, 0 findings; de nieuwe bestanden apart nog eens, ook 0) - `flutter build web --release --no-web-resources-cdn --csp` en `dart run tool/check_web_hardening.dart`: Web hardening OK `make check-full` is niet in zijn geheel gedraaid (geen licentie-/SBOM-/deps-ronde). `pubspec.yaml` is niet gewijzigd. DAST/ZAP niet gedraaid. Een VM-test kan `package:web` niet laden. De schemegrens is daarom een pure functie met tests; de socket zelf zit in de dekkingsbasislijn, met de reden erbij. De driver voor de latere proef staat in `testbed/jitsi-meet/probe/webcall.js`.
De preflight liep vast op InternetAddress in de webversie. config.js en
de XMPP-websocket gaan nu via de browser: https of wss, platte tekst alleen
naar een letterlijk loopback-adres. De pagina staat wss: toe en mediatoestemming
alleen voor de eigen site. Een tweepersoonscall op een uitgebrachte webbuild
is hiermee niet bewezen.

Co-authored-by: Cursor <cursoragent@cursor.com>
brenno merged commit aca68ad8e3 into main 2026-10-25 20:09:29 +00:00
Sign in to join this conversation.
No description provided.