Same-site cookies är en viktig säkerhetsmekanism som kan användas för att mildra Cross-Site Request Forgery (CSRF) attacker i webbapplikationer. CSRF-attacker uppstår när en angripare lurar ett offer att utföra en oavsiktlig åtgärd på en webbplats där offret är autentiserat. Genom att utnyttja offrets session kan angriparen utföra åtgärder på uppdrag av offret utan deras samtycke.
Cookies på samma plats hjälper till att förhindra CSRF-attacker genom att begränsa omfattningen av cookies till samma ursprung. Ett ursprung definieras av kombinationen av protokollet (t.ex. HTTP eller HTTPS), domän och portnummer. När en cookie ställs in med attributet "SameSite", anger den om cookien ska skickas i begäranden över flera webbplatser.
Det finns tre möjliga värden för "SameSite"-attributet:
1. "Strikt": När attributet "SameSite" är satt till "Strikt" skickas cookien endast i förfrågningar som kommer från samma sida. Detta innebär att kakan inte kommer att skickas i förfrågningar över webbplatser, vilket effektivt förhindrar CSRF-attacker. Till exempel, om en användare är autentiserad på "example.com" och besöker en skadlig webbplats som försöker utföra en CSRF-attack, kommer webbläsaren inte att inkludera den "Strikta" samma webbplats-cookien i begäran, vilket förhindrar attacken.
2. "Lax": När attributet "SameSite" är inställt på "Lax" skickas cookien i förfrågningar mellan webbplatser som anses säkra, till exempel när begäran utlöses av en navigering på toppnivå från användaren. Cookien skickas dock inte i förfrågningar som initieras av tredje parts webbplatser, till exempel när en bild eller skripttagg laddas från en annan domän. Detta ger en balans mellan säkerhet och användbarhet. Till exempel kommer en användare som besöker en skadlig webbplats via en länk inte att utlösa en CSRF-attack eftersom "Lax"-kakan för samma webbplats inte kommer att inkluderas i begäran.
3. "Ingen": När attributet "SameSite" är inställt på "Ingen", skickas cookien i alla förfrågningar mellan webbplatser, oavsett deras ursprung. Men för att säkerställa säkerheten med att använda "Ingen" måste kakan också markeras som "Säker", vilket innebär att den endast kommer att skickas över HTTPS-anslutningar. Denna kombination tillåter webbapplikationer att stödja cross-site-funktionalitet samtidigt som de skyddar mot CSRF-attacker. Det bör noteras att "None"-värdet endast bör användas när det är nödvändigt, eftersom det ökar attackytan och potentialen för CSRF-sårbarheter.
För att illustrera användningen av cookies på samma plats för att mildra CSRF-attacker, överväg följande scenario: en bankwebbplats som tillåter användare att överföra pengar. Utan cookies på samma plats kan en angripare skapa en skadlig webbplats som innehåller ett doldt formulär som automatiskt skickar en begäran om överföring av pengar till bankwebbplatsen när den besöks av en autentiserad användare. Om användarens webbläsare inkluderar sessionscookien i begäran kommer överföringen att utföras utan användarens medgivande. Men genom att ställa in sessionscookien som en samma-plats-cookie med attributet "Strikt" kommer webbläsaren inte att inkludera cookien i begäran om gränsöverskridande webbplatser, vilket effektivt förhindrar CSRF-attacken.
Cookies på samma plats är en värdefull säkerhetsmekanism för att mildra CSRF-attacker i webbapplikationer. Genom att begränsa omfattningen av cookies till samma ursprung förhindrar dessa cookies angripare från att utnyttja en användares session för att utföra obehöriga åtgärder. Värdet "Strikt" säkerställer att cookies endast skickas i förfrågningar som kommer från samma webbplats, medan värdet "Lax" tillåter att cookies skickas i säkra förfrågningar mellan webbplatser. Värdet "None" i kombination med attributet "Secure" möjliggör funktionalitet över flera webbplatser samtidigt som det skyddar mot CSRF-attacker.
Andra senaste frågor och svar ang EITC/IS/WASF Web Applications Security Fundamentals:
- Skyddar implementeringen av Do Not Track (DNT) i webbläsare mot fingeravtryck?
- Hjälper HTTP Strict Transport Security (HSTS) till att skydda mot protokollnedgraderingsattacker?
- Hur fungerar DNS-återbindningsattacken?
- Uppstår lagrade XSS-attacker när ett skadligt skript ingår i en begäran till en webbapplikation och sedan skickas tillbaka till användaren?
- Används SSL/TLS-protokollet för att upprätta en krypterad anslutning i HTTPS?
- Vad är hämtningsmetadataförfrågningar och hur kan de användas för att skilja mellan begäranden från samma ursprung och flera webbplatser?
- Hur minskar betrodda typer attackytan för webbapplikationer och förenklar säkerhetsgranskningar?
- Vad är syftet med standardpolicyn i betrodda typer och hur kan den användas för att identifiera osäkra strängtilldelningar?
- Vad är processen för att skapa ett betrodda typer-objekt med betrodda typer API?
- Hur hjälper direktivet om betrodda typer i en säkerhetspolicy för innehåll att lindra DOM-baserade XSS-sårbarheter (cross-site scripting)?
Se fler frågor och svar i EITC/IS/WASF Web Applications Security Fundamentals

