Hopp til hovedinnhold

Opplasting av filer

I selvbetjeningsløsningene er det ofte behov for å laste opp dokumentasjon i form av dokumenter. Hvordan skal man sørge for at disse dokumentene ikke inneholder noe skadelig?

Virusscanning

I NAIS-clustrene har vi installert et produkt som heter ClamAV. Det har et enkelt HTTP-grensesnitt der man kan laste opp filer man ønsker å få scannet. Dokumentasjon og kodeeksempler finnes i NAIS-doken.

clamav

Virusscanning er ikke feilfri, og selv om man har scannet et dokument betyr det ikke at man er 100% sikker. Vær varsom med hvor dere bruker informasjonen fra dokumentene, og sørg for å encode informasjonen for miljøet der den skal benyttes. For webapplikasjoner finnes det innebygget støtte i alle de store rammeverkene som React og Vue. Hvis du ikke bruker noen av disse er det DOMPurify som er "gullstandarden".

Verifisering av filtype

Man kan ikke stole på at filnavn-extensions (doc, pdf osv.) forteller sannheten om hva slags type fil det er man mottar. En enkel og sikrere måte å verifisere hva slags type fil man har med å gjøre er å sjekke filens signatur (må ikke forveksles med en kryptografisk signatur), av og til omtalt som "magic numbers" eller "magic bytes". På kommandolinja kan man gjøre dette med kommandoen file, i kode må man gjøre det selv. En gyldig PNG-fil starter feks alltid med sekvensen 89 50 4E 47 0D 0A 1A 0A. En liste med de vanligste signaturene finner man på Wikipedia.

Kryptering

Man bør også vurdere om de opplastede filene skal krypteres. Dette gjelder spesielt dersom man tilbyr mellomlagring av delvis utfylte søknader da denne informasjonen juridisk sett ikke er "innsendt" enda, og da har vi ikke hjemmel til å benytte den. Et eksempel på slik kryptering finner du her. Husk å beskytte nøkler og passphrases ved å lagre dem i Google Secrets Manager (eller Vault hvis man er on-prem).

Savner du noe?

Legg det inn selv på GitHub, si ifra i #security-champion, eller kontakt redaksjonen. Takk! 💖