# iOS-app — sikkerhet & personvern sjekkliste OWASP MASVS 2.1.0 (utgitt 2024-01-18) + `PrivacyInfo.xcprivacy` + App Privacy Details. Sub-sjekkliste av `checklist.md`. MASVS definerer *hva* som skal verifiseres; MASTG/MASWE definerer *hvordan* man tester. ([OWASP MASVS](https://mas.owasp.org/MASVS/)) ## OWASP MASVS 2.1 — 8 kontroll-grupper Velg de relevante; en all-local-app uten auth/nett trenger få. Ikke-relevante grupper merkes `N/A` med én linjes begrunnelse i `pack-overrides.md`. - [ ] **MASVS-STORAGE** — sensitiv data i Keychain (ikke `UserDefaults`/`plist`/klartekst-fil); ingen sensitiv data i logger/backups/snapshots; cache ryddes ved behov. - [ ] **MASVS-CRYPTO** — kun moderne algoritmer; nøkler i Keychain/Secure Enclave; ingen hardkodede nøkler; tilfeldighet fra `SecRandomCopyBytes`/`CryptoKit`. - [ ] **MASVS-AUTH** — hvis appen har auth: sikker sesjonshåndtering, biometri som beleilighet ikke eneste faktor, riktig logout/timeout. - [ ] **MASVS-NETWORK** — TLS på all trafikk (ATS aktiv, ingen ubegrunnede unntak); sertifikat-validering ikke deaktivert; vurder pinning hvis trusselsbildet krever det. - [ ] **MASVS-PLATFORM** — minimale entitlements/capabilities; trygg IPC (App Groups, URL schemes, universal links validert); ingen sensitiv data i `pasteboard`/skjermbilder uten grunn; deep links validerer input. - [ ] **MASVS-CODE** — oppdaterte dependencies (kjente CVE-er sjekket); inputvalidering på alt eksternt (deep links, fildelt innhold, push-payloads); ingen debug-kode/test-endepunkter i release. - [ ] **MASVS-RESILIENCE** — *kun hvis appen håndterer høyverdi-data*: anti-tampering/jailbreak-deteksjon, obfuskering. For en vanlig konsument-app: vanligvis `N/A`. - [ ] **MASVS-PRIVACY** *(ny i 2.1.0)* — minimer datainnsamling; vær transparent (purpose-strings, onboarding-forklaring, App Privacy Details); gi brukerkontroll (slett data, trekk samtykke); ingen tracking uten ATT. ## `PrivacyInfo.xcprivacy` — påkrevd siden 2024-05-01 Mal: `scaffold/PrivacyInfo.xcprivacy`. ([Apple — Privacy manifest files](https://developer.apple.com/documentation/bundleresources/privacy-manifest-files)) - [ ] `NSPrivacyTracking` (Bool) — `false` med mindre appen faktisk tracker på tvers av apper/nettsteder. - [ ] `NSPrivacyTrackingDomains` (Array) — domener brukt til tracking (tom hvis `NSPrivacyTracking = false`). - [ ] `NSPrivacyCollectedDataTypes` (Array) — hver innsamlet datatype med `NSPrivacyCollectedDataTypeLinked`, `...Tracking`, og `NSPrivacyCollectedDataTypePurposes`. Tom hvis ingenting samles. - [ ] `NSPrivacyAccessedAPITypes` (Array) — **required-reason-API-kategorier** appen bruker, med tillatt reason-kode. Kategorier inkl.: file timestamp APIs, system boot time APIs, disk space APIs, active keyboard APIs, user defaults APIs (m.fl.). Manglende deklarasjon = App Store-avvisning (Guideline 5.3.4). ([Apple — Required reason API](https://developer.apple.com/documentation/bundleresources/describing-use-of-required-reason-api)) - [ ] **Tredjeparts-SDK-er:** hver må levere sin egen `PrivacyInfo.xcprivacy` (og signatur for noen). Verifiser — ellers blir det din avvisning. ## App Privacy Details ("nutrition label") — App Store Connect Må stemme med faktisk databehandling i appen *og* alle SDK-er. ([Apple — App Privacy Details](https://developer.apple.com/app-store/app-privacy-details/)) - [ ] For hver relevant kategori (Contact Info, Health & Fitness, Financial Info, Location [Precise/Coarse], Sensitive Info, Contacts, User Content, Browsing/Search History, Identifiers, Purchases, Usage Data, Diagnostics, Surroundings, Body, Other): angitt **om** den samles, **formål** (App Functionality / Analytics / Product Personalization / Advertising / Other), og **om linket til identitet** + **om brukt til tracking**. - [ ] "Data Not Collected" valgt hvis — og bare hvis — verken appen eller noen SDK samler noe. (Den enkleste posisjonen, og verifiserbar.) - [ ] Personvern-policy-URL satt hvis noe samles. ## Permission-transparens (GDPR + App Review-forventning) - [ ] Hver permission (location, notifikasjoner, …) forklart på en onboarding/forklarings-skjerm *før* system-prompten. - [ ] App fungerer i degradert-men-nyttig modus hvis permission nektes (ingen dead-end). - [ ] Ingen tredjeparts-AI-/analytics-deling uten at det er deklarert og (der relevant) samtykket.