PHP Academy · leksjon

CSRF-beskyttelse

Generer og valider CSRF-tokener i skjemaer for å forhindre forfalskede forespørsler.

Leksjon 3 av 413 trinn

CSRF-beskyttelse er en gratis leksjon i PHP Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i PHP Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Hva er CSRF?

Cross-Site Request Forgery (CSRF) lurer autentiserte brukere til å utføre uønskede handlinger. En skadelig side sender en forfalsket forespørsel til nettstedet ved hjelp av offerets aktive økt.

Slik fungerer CSRF

Scenario: Alice er logget inn på bank.com. Hun besøker malicious.com, som inneholder et skjult skjema som automatisk sender en forespørsel om overføring til bank.com ved hjelp av øktens informasjonskapsel.

CSRF-tokener

Forsvaret er et hemmelig token for hver økt, innebygd i hvert skjema. Serveren validerer tokenet ved POST/PUT/PATCH/DELETE-forespørsler — en forfalsket forespørsel fra en annen origin kan ikke lese tokenet.

@csrf i Laravel Blade

Legg til direktivet @csrf i alle HTML-skjemaer som endrer data.

<form method="POST" action="/transfer">
    @csrf
    <input name="amount" type="number">
    <button>Transfer</button>
</form>

CSRF-mellomvare

Laravels VerifyCsrfToken-mellomvare kontrollerer X-CSRF-TOKEN-headeren eller feltet _token for alle forespørsler som ikke er GET, i web-mellomvaregruppen.

CSRF for AJAX

For AJAX-forespørsler leser De tokenet fra meta-taggen og sender det som en header.

// In the HTML head:
<meta name="csrf-token" content="{{ csrf_token() }}">

// In JavaScript (Axios):
axios.defaults.headers.common["X-CSRF-TOKEN"] =
    document.querySelector("meta[name=csrf-token]").content;

Utelukking av ruter

API-ruter som bruker Sanctum-tokener, utelukkes vanligvis fra CSRF-beskyttelse fordi de bruker tokenbasert autentisering i stedet for informasjonskapsler.

<?php
// In VerifyCsrfToken $except:
protected $except = [
    "api/*",
    "webhooks/*",
];

SameSite-attributtet for informasjonskapsler

Hvis SameSite=Strict eller Lax settes på øktens informasjonskapsel, får moderne nettlesere et ekstra lag med CSRF-beskyttelse.

Double Submit Cookie-mønsteret

Et alternativt CSRF-forsvar for API-er: Send tokenet både som en informasjonskapsel og som en forespørselsheader. Serveren kontrollerer at de samsvarer — forespørsler fra andre opphav kan ikke lese informasjonskapsler.

CSRF i API-kontekster

REST-API-er som autentiserer med Bearer-tokener (Sanctum, JWT), er ikke sårbare for CSRF fordi tokenene lagres i localStorage (og ikke sendes automatisk av nettleseren).

Testing av CSRF

Laravels testverktøy inkluderer automatisk CSRF-tokener. De kan også teste at ubeskyttede POST-forespørsler blir avvist.

<?php
// With token:
$this->post("/transfer", ["_token" => csrf_token(), "amount" => 100]);
// Simulating CSRF attack (no token):
$this->withoutMiddleware(VerifyCsrfToken::class)->post("/transfer", [...]);

Sammendrag

CSRF-beskyttelse krever et skjult token i alle skjemaer som endrer tilstand. Laravel håndterer dette automatisk med @csrf. For AJAX legger De til tokenet som en HTTP-header. API-ruter som bruker Bearer-tokener, påvirkes ikke.

Hurtigsjekk

Hvordan legger De til CSRF-beskyttelse i et Laravel Blade-skjema?

Gratis å komme i gang

Lær deg PHP 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
49
Leksjoner
195

Ofte stilte spørsmål

Er leksjonen «CSRF-beskyttelse» gratis?

Ja – hele teksten i «CSRF-beskyttelse» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av PHP Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i PHP Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «CSRF-beskyttelse»?

Generer og valider CSRF-tokener i skjemaer for å forhindre forfalskede forespørsler. Du øver på PHP Academy 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 PHP Academy?

Ingen tidligere erfaring er nødvendig. PHP Academy 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 «CSRF-beskyttelse»?

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 PHP Academy-leksjonen?

Ja. Alle PHP Academy-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. Forebygge cross-site scripting (XSS)
  2. SQL-injeksjon og parametriserte spørringer
  3. CSRF-beskyttelse
  4. Sikker lagring av passord
← Tilbake til PHP Academy