Sikker koding og OWASP Top 10 for backend · leksjon

Verifisering av programvare- og dataintegritet

Implementer mekanismer for å verifisere integriteten til kode, konfigurasjoner og kritiske data for å forhindre uautorisert manipulering eller korrumpering.

Leksjon 3 av 411 trinn

Verifisering av programvare- og dataintegritet er en gratis leksjon i Sikker koding og OWASP Top 10 for backend på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Sikker koding og OWASP Top 10 for backend, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Sikker koding og OWASP Top 10 for backend inneholder totalt 4 leksjoner.

Hva er dataintegritet?

Innen sikker backend-utvikling betyr integritet å sikre at data, kode og konfigurasjoner ikke har blitt manipulert eller endret på uautorisert vis. Tenk på det som beskyttelse mot skjulte, ondsinnede endringer.

Uten integritet kan en angriper:

  • Endre applikasjonens kode.
  • Endre kritiske konfigurasjonsinnstillinger.
  • Endre sensitive data i databasen.

Slike endringer kan føre til systemfeil, datainnbrudd eller fullstendig kompromittering.

Hashing for integritet

Et sentralt verktøy for integritetskontroll er kryptografisk hashing. En hashfunksjon tar en inndata, for eksempel en fil eller en streng, og returnerer en streng med en fast størrelse i byte, kalt en hashverdi eller et digest.

Viktige egenskaper ved en god hashfunksjon:

  • Deterministisk: Samme inndata gir alltid samme utdata.
  • Enveis: Det er vanskelig å reversere hashen for å finne den opprinnelige inndataen.
  • Kollisjonsresistent: Det er vanskelig å finne to ulike inndata som gir samme hash.

Populære algoritmer inkluderer SHA-256 og SHA-512.

Enkelt eksempel på hashing (Java)

La oss se hvordan De genererer en SHA-256-hash i Java. Legg merke til hvordan selv en svært liten endring i inndatastrengen endrer hashresultatet fullstendig.

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Main {
  public static void main(String[] args) {
    String originalString = "CoddyKit is awesome!";
    String alteredString = "CoddyKit is awesome."; // Small change

    try {
      MessageDigest digest = MessageDigest.getInstance("SHA-256");

      byte[] hash1 = digest.digest(originalString.getBytes(StandardCharsets.UTF_8));
      String encodedHash1 = Base64.getEncoder().encodeToString(hash1);
      System.out.println("Original Hash: " + encodedHash1);

      byte[] hash2 = digest.digest(alteredString.getBytes(StandardCharsets.UTF_8));
      String encodedHash2 = Base64.getEncoder().encodeToString(hash2);
      System.out.println("Altered Hash:  " + encodedHash2);

    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
  }
}

Kontroll av programvare og filer

Når De laster ned programvare, spesielt fra open source-prosjekter, finner De ofte en tilhørende hashverdi, for eksempel en MD5- eller SHA-256-kontrollsum. Dette gjør det mulig å verifisere nedlastingen.

Trinn for verifisering:

  1. Last ned programvaren og den oppgitte hashen.
  2. Generer hashen for den nedlastede filen lokalt.
  3. Sammenlign den genererte hashen med den oppgitte.

Hvis de samsvarer, har filen ikke blitt manipulert under nedlastingen eller lagringen.

Sikring av konfigurasjonsfiler

Konfigurasjonsfiler (.env, application.properties, web.xml) inneholder viktige innstillinger som databasetilkoblingsstrenger, API-nøkler og serverporter. Manipulering av disse kan føre til alvorlige sikkerhetshull.

Slik beskytter De dem:

  • Begrens tilgang: Bruk sterke filsystemtillatelser.
  • Hash ved oppstart: Beregn og verifiser hasher for kritiske konfigurasjonsfiler når applikasjonen starter.
  • Versjonskontroll: Spor endringer med Git, og forhindre direkte manuelle endringer i produksjonsmiljøet.

Beskyttelse av data i databaser

Å sikre dataintegritet i databaser handler om mer enn bare hashing. Det innebærer å forhindre uautoriserte eller utilsiktede endringer i den lagrede informasjonen.

Viktige mekanismer for databaseintegritet:

  • Begrensninger: Begrensningene PRIMARY KEY, UNIQUE, FOREIGN KEY og CHECK håndhever dataregler.
  • Transaksjoner: Sørger for at operasjoner er atomiske (alt eller ingenting), slik at delvise oppdateringer unngås.
  • Revisjonslogger: Registrerer hvem som endret hva og når.

For sensitive data bør De vurdere hashing på applikasjonsnivå før lagring, særlig for uforanderlige felt.

Digitale signaturer og tillit

Mens hashing verifiserer hva en fil er, verifiserer digitale signaturer hvem som opprettet den, og at den ikke har blitt endret siden den ble signert. De tilfører et lag med autentisitet.

Slik fungerer de:

  • Oppretteren hasher dataene.
  • Oppretteren krypterer hashen med sin private nøkkel (dette er «signaturen»).
  • Alle kan bruke oppretterens offentlige nøkkel til å dekryptere signaturen, hente ut den opprinnelige hashen og deretter sammenligne den med en hash de beregner lokalt.

Hvis hashene samsvarer, er signaturen gyldig og dataene autentiske.

Integritet under kjøring

Integritetskontroller gjelder ikke bare filer som ligger lagret. De kan også overvåke applikasjonens integritet mens den kjører. Dette bidrar til å oppdage kompromitteringer som oppstår etter utrulling.

Eksempler på kontroller under kjøring:

  • Minneintegritet: Oppdager uautoriserte endringer i prosessminnet.
  • Kodeintegritet: Verifiserer at innlastede biblioteker eller kritiske kodesegmenter ikke har blitt byttet ut.
  • Overvåking av systemkall: Ser etter uvanlige eller uautoriserte systemkall fra applikasjonen.

Dette inngår ofte i avanserte sikkerhetsløsninger som RASP.

Kontinuerlig integritetsovervåking

Manuell kontroll av integritet er ikke skalerbar. Automatisering av disse prosessene er avgjørende for kontinuerlig sikkerhet.

Strategier for automatisering:

  • CI/CD-integrasjon: Hash kritiske filer (kode og konfigurasjoner) under bygging og utrulling.
  • File Integrity Monitoring (FIM): Verktøy som kontinuerlig skanner kritiske kataloger etter endringer og varsler om avvik.
  • Planlagte oppgaver: Kjør skript med jevne mellomrom for å hashe og sammenligne kritiske systemkomponenter.

Varsler fra FIM-verktøy bør integreres i sikkerhetsovervåkingssystemet.

Test kunnskapene Deres om integritet

De har lært om ulike måter å sikre programvare- og dataintegritet på. La oss teste forståelsen Deres!

Oppsummering: Integritet er avgjørende

Vi har sett på hvor viktig programvare- og dataintegritet er for en sikker backend. Ved å implementere mekanismer for integritetskontroll kan De beskytte mot uautorisert manipulering og sikre at systemene oppfører seg som forventet.

Husk å:

  • Bruke kryptografisk hashing for filer og kritiske data.
  • Administrere konfigurasjonsfiler på en sikker måte.
  • Utnytte funksjoner for databaseintegritet.
  • Vurdere digitale signaturer for autentisitet.
  • Automatisere integritetsovervåking med FIM-verktøy.

Disse metodene danner et solid grunnlag for tillit og pålitelighet i applikasjonene Deres.

Gratis å komme i gang

Lær deg Sikker koding og OWASP Top 10 for backend med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Verifisering av programvare- og dataintegritet» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Sikker koding og OWASP Top 10 for backend, inkludert «Verifisering av programvare- og dataintegritet», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Sikker koding og OWASP Top 10 for backend inneholder totalt 4 leksjoner.

Hva lærer jeg i «Verifisering av programvare- og dataintegritet»?

Implementer mekanismer for å verifisere integriteten til kode, konfigurasjoner og kritiske data for å forhindre uautorisert manipulering eller korrumpering. Du øver på Sikker koding og OWASP Top 10 for backend med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Sikker koding og OWASP Top 10 for backend?

Ingen tidligere erfaring er nødvendig. Sikker koding og OWASP Top 10 for backend på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Verifisering av programvare- og dataintegritet»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Sikker koding og OWASP Top 10 for backend-leksjonen?

Ja. Alle Sikker koding og OWASP Top 10 for backend-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Sikker logging og varsling
  2. Runtime Application Self-Protection (RASP)
  3. Verifisering av programvare- og dataintegritet
  4. Revisjonsspor og manipulasjonssikre logger
← Tilbake til Sikker koding og OWASP Top 10 for backend