SOWA Privacy til udviklere
Installer fra kildekoden
SOWA Privacy leveres via Chrome Web Store som et binært program, men kildekoden er åben for inspektion og personlig brug under Source-Available-licensen i LICENSE. Sådan bygger og indlæser du den lokalt:
git clone https://github.com/Sowa-Privacy/sowa-privacy-chrome-extension.git
cd sowa-privacy-chrome-extension
npm install
npm run build
Åbn derefter chrome://extensions/, aktiver Udviklertilstand, og klik på Indlæs udpakket for mappen dist/.
Tre tunge vendor-bundler
Bygget én gang med esbuild, før Vite kører, så produktionsbuildet er fuldt selvindeholdt:
web-llm.bundle.js– ~5,4 MB – lokal LLM-inferens (valgfri, opt-in).transformers.bundle.js+onnx-wasm/*– ~32 MB – NER-pipeline-runtime (valgfri, opt-in).file-parsers.bundle.js+pdf.worker.min.mjs+xlsx-worker.bundle.js– ~2 MB – PDF-, DOCX- og XLSX-parsing til filupload-interceptoren.
Hvad der er indeni
manifest.json Chrome MV3-manifest (eneste sandhedskilde for version)
contentScript.js MV3-indholdsscript-indgangspunkt
service_worker.js MV3-service worker (tilstandsløs)
offscreen.js Offscreen-dokument til NER-inferens
lib/
constants.js DEF_CONFIG, PRESET_PATTERNS, NER_MODELS,
WEBLLM_MODELS, INDUSTRY_BLACKLISTS
pii-core.js detectPII, mergeDetectionHits, sortliste + regex-pipeline
ner-detector.js NER-pipeline + diagnostisk tilstandsflade
ui-utils.js shouldUseRegex / NER / LLM-hjælpere, tema, debounce
ui_i18n.js t() + RESOURCES (4 sprog) + applyI18n
cs/
owl-guardian.js Owl-widget Shadow DOM, kontinuerlig scanning, badge-tæller
upload-interceptor.js Fil-drag/drop / filinput-interceptor
host-matcher.js contentIntegration.entries mønstertilpasning
tests/unit/ 688 enhedstests – hold grøn
scripts/ esbuild-bundle + zip-pakning
Privatlivsgarantier
Dette er reglerne, der håndhæves i koden – ikke blot løfter i markedsføring:
- Ingen telemetri, ingen analyse, ingen førstepartsserverkald – med én snævert afgrænset undtagelse: brugerens egen rettighedskontrol (et enkelt autoriseret POST til
/api/entitlements/me, der kun returnerer brugerens planflag). Caches i en time. Ingen PII, ingen prompter. - NER er slået fra som standard, kun opt-in – NER-modellen er en 65 MB tredjeparts-download (HuggingFace). Den begynder aldrig at indlæse, medmindre brugeren eksplicit aktiverer knappen i Indstillinger.
- Lokal LLM er slået fra som standard, kun opt-in – samme regel. WebLLM-modeller er store; at downloade én er brugerens beslutning.
- Owl er websiteafgrænset – indholdsscriptet registreres på
<all_urls>til lifecycle-hooks, men detektion, model-foropvarmning og owl-widget kører kun på de syv hosts icontentIntegration.entries(ChatGPT, OpenAI, Claude, Gemini, Copilot, Grok, x.ai). - CSP forbyder dynamisk kodeudførelse –
'wasm-unsafe-eval'til ONNX er tilladt;'unsafe-eval'er ikke. IngenFunction-fra-streng, ingen eval-drevne plugins. - Kun Promises til chrome.*-API'er – ingen callback-form, der slører fejlhåndtering.
- Tilstandsløs service worker – MV3 afsluttes aggressivt; persistens lever i
chrome.storage, ikke i modul-globals.
Tests
Tests er den primære korrekthedsgating. Fra v1.2.5.x: 688 ud af 689 bestået i 17 suiter. Ny kode skal holde dette grønt.
npm run test:unit:nocov # fast loop during development (~3s)
npm run test:unit # CI gate with coverage
npm run typecheck # tsc --noEmit
npm run lint # eslint
Fejlrettelser følger en TDD-form: skriv den fejlende test først, ret fejlen, testen forbliver som regressionsvagt. Et reelt eksempel leveret i tests/unit/lib/ner-detector.test.js – testen "detect-counter does NOT reset on subsequent init successes" blev skrevet før den tilsvarende rettelse og afslørede et dårligt første forsøg på implementeringen.
Bidrag
Bidrag til det officielle repository er velkomne under licensbetingelserne. Åbn et issue eller indsend en pull request i overensstemmelse med tekniske standarderne i CONTRIBUTING.md:
- Branch fra
main. Én logisk ændring pr. PR. - Commit-beskedkonvention:
type(scope): description (vX.Y.Z.W). - Opdater
MIGRATION_LOG.mdfor ikke-trivielle ændringer (nye moduler, kontraktændringer, arkitekturskift). - Tjekliste ved indsendelse for PR'er, der berører detektion eller netværk: ingen nye
fetch()-kald til en førstepartsserver, ingen ny telemetri, ingen tung komponent automatisk aktiveret, alt du gemmer noteres i migreringsloggen, enhver ny tilladelse er begrundet over for Chrome Web Store-anmelderen.
Ansvarlig videregivelse
For sikkerhedssårbarheder bedes du ikke åbne offentlige GitHub-issues. Send en detaljeret rapport til security@sowaprivacy.ai:
- Klar beskrivelse af sårbarheden.
- Trin til reproduktion.
- Berørt version (
version-feltet imanifest.json). - Konsekvensanalyse, hvis du har én.
- Foreslået rettelse, hvis relevant.
Vi forpligter os til at bekræfte modtagelsen af din rapport inden for 72 timer, give en statusopdatering inden for 7 dage, kreditere dig i udgivelsesnoterne (medmindre du foretrækker anonymitet) og koordinere tidspunktet for offentlig videregivelse med dig.
Det offentliggjorte omfang, eksempler på, hvad vi anser for en sårbarhed, og en Hall of Fame findes i SECURITY.md i rodmappen af repository'et.