CSRF eller Cross-Site Request Forgery er et nettstedssårbarhet der en angriper kan føre til at en handling skjer i et offers økt på et annet nettsted. En av tingene som gjør CSRF så mye av en risiko er at det ikke engang krever brukerinteraksjon, alt som trengs er at offeret skal se en nettside med utnyttelsen i den.
Tips: CSRF uttales vanligvis enten bokstav for bokstav eller som "sea surf".
Hvordan fungerer et CSRF-angrep?
Angrepet innebærer at angriperen oppretter et nettsted som har en metode for å lage en forespørsel på et annet nettsted. Dette kan kreve brukerinteraksjon, for eksempel å få dem til å trykke på en knapp, men det kan også være interaksjonsfritt. I JavaScript er det måter å få en handling til å skje automatisk. For eksempel vil et null x null pikselbilde ikke være synlig for brukeren, men kan konfigureres slik at dets "src" sender en forespørsel til et annet nettsted.
JavaScript er et språk på klientsiden, dette betyr at JavaScript-kode kjøres i nettleseren i stedet for på nettserveren. Takket være dette faktum er datamaskinen som sender CSRF-forespørselen faktisk offerets. Dessverre betyr dette at forespørselen gjøres med alle tillatelsene som brukeren har. Når det angripende nettstedet har lurt offeret til å sende CSRF-forespørselen, kan forespørselen i hovedsak ikke skilles fra brukeren som sender forespørselen normalt.
CSRF er et eksempel på et "forvirret stedfortredende angrep" mot nettleseren ettersom nettleseren blir lurt til å bruke tillatelsene sine av en angriper uten disse privilegiene. Disse tillatelsene er økten og autentiseringstokenene dine til målnettstedet. Nettleseren din inkluderer automatisk disse opplysningene i enhver forespørsel den sender.
CSRF-angrep er noe komplekse å arrangere. Først av alt, må målnettstedet ha et skjema eller en URL som har bivirkninger som å slette kontoen din. Angriperen må deretter lage en forespørsel for å utføre ønsket handling. Til slutt må angriperen få offeret til å laste inn en nettside med utnyttelsen mens de er logget på målnettstedet.
For å forhindre CSRF-problemer er det beste du kan gjøre å inkludere et CSRF-token. Et CSRF-token er en tilfeldig generert streng som er satt som en informasjonskapsel, verdien må inkluderes i hvert svar sammen med en forespørselsoverskrift som inkluderer verdien. Selv om et CSRF-angrep kan inkludere informasjonskapselen, er det ingen måte å kunne bestemme verdien av CSRF-tokenet for å sette overskriften og så vil angrepet bli avvist.