CSRF-beskyttelse
Generér og validér CSRF-tokens i formularer for at forhindre forfalskede forespørgsler.
CSRF-beskyttelse er en gratis PHP Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i PHP Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. PHP Academy-kurset indeholder 4 lektioner i alt.
Hvad er CSRF?
Forfalskning af anmodninger på tværs af websteder (CSRF) narrer godkendte brugere til at udføre uønskede handlinger. En ondsindet side sender en forfalsket anmodning til dit websted ved hjælp af offerets aktive session.
Sådan fungerer CSRF
Scenarie: Alice er logget ind på bank.com. Hun besøger malicious.com, som indeholder en skjult formular, der automatisk sender en overførselsanmodning til bank.com ved hjælp af hendes sessionscookie.
CSRF-tokens
Forsvaret er et hemmeligt token pr. session, som indsættes i alle formularer. Serveren validerer tokenet ved POST/PUT/PATCH/DELETE-anmodninger — en forfalsket anmodning fra en anden oprindelse kan ikke læse tokenet.
@csrf i Laravel Blade
Tilføj direktivet @csrf til alle HTML-formularer, der ændrer data.
<form method="POST" action="/transfer">
@csrf
<input name="amount" type="number">
<button>Transfer</button>
</form>CSRF-middleware
Laravels VerifyCsrfToken-middleware kontrollerer headeren X-CSRF-TOKEN eller feltet _token på alle anmodninger, der ikke er GET, i middlewaregruppen web.
CSRF til AJAX
Ved AJAX-anmodninger skal du læse tokenet fra meta-tagget og sende 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;Udelukkelse af ruter
API-ruter, der bruger Sanctum-tokens, er typisk udelukket fra CSRF-beskyttelse, fordi de bruger tokenbaseret godkendelse i stedet for cookies.
<?php
// In VerifyCsrfToken $except:
protected $except = [
"api/*",
"webhooks/*",
];SameSite-cookieattributten
Hvis du indstiller SameSite=Strict eller Lax på sessionscookien, får du et ekstra lag CSRF-beskyttelse i moderne browsere.
Mønsteret med dobbelt indsendelse af cookie
Et alternativt CSRF-forsvar til API'er: Send tokenet både som en cookie og som en request-header. Serveren kontrollerer, at de stemmer overens — anmodninger på tværs af oprindelser kan ikke læse cookies.
CSRF i API-kontekster
REST-API'er, der godkender med Bearer-tokens (Sanctum, JWT), er ikke sårbare over for CSRF, fordi tokens gemmes i localStorage og ikke sendes automatisk af browseren.
Test af CSRF
Laravels testhjælpere medtager automatisk CSRF-tokens. Du kan også teste, at ubeskyttede POST-anmodninger afvises.
<?php
// With token:
$this->post("/transfer", ["_token" => csrf_token(), "amount" => 100]);
// Simulating CSRF attack (no token):
$this->withoutMiddleware(VerifyCsrfToken::class)->post("/transfer", [...]);Opsummering
CSRF-beskyttelse kræver et skjult token i alle formularer, der ændrer tilstand. Laravel håndterer dette automatisk med @csrf. Ved AJAX skal du tilføje tokenet som en HTTP-header. API-ruter, der bruger Bearer-tokens, påvirkes ikke.
Hurtig kontrol
Hvordan tilføjer du CSRF-beskyttelse til en Laravel Blade-formular?
Lær PHP med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 49
- Lektioner
- 195
Ofte stillede spørgsmål
Er lektionen “CSRF-beskyttelse” gratis?
Ja — hele teksten til “CSRF-beskyttelse” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af PHP Academy-kurset, skal du opgradere til CoddyKit PRO. PHP Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “CSRF-beskyttelse”?
Generér og validér CSRF-tokens i formularer for at forhindre forfalskede forespørgsler. Du øver dig i PHP Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på PHP Academy?
Der kræves ingen tidligere erfaring. PHP Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “CSRF-beskyttelse”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne PHP Academy-lektion?
Ja. Alle PHP Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Forebyggelse af Cross-Site Scripting (XSS)
- SQL-injection og parametriserede forespørgsler
- CSRF-beskyttelse
- Sikker opbevaring af adgangskoder