Om Riksdagens beslut om samtycke till cookies

Igår beslutade Riksdagen att det ska krävas samtycke från besökaren innan cookies får lagras eller hämtas i webbläsaren. Beslutet ändrar lagen om elektronisk kommunikation vad gäller exempelvis cookies.

Tidigare löd paragraf 6:18 så här:

Elektroniska kommunikationsnät får användas för att lagra eller få tillgång till information som är lagrad i en abonnents eller användares terminalutrustning endast om abonnenten eller användaren av den personuppgiftsansvarige får information om ändamålet med behandlingen och ges tillfälle att hindra sådan behandling. Detta hindrar inte sådan lagring eller åtkomst som behövs för att utföra eller underlätta att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen har begärt.

Men från 1 juli kommer den lyda så här:

Uppgifter får lagras i eller hämtas från en abonnents eller användares terminalutrustning endast om abonnenten eller användaren får tillgång till information om ändamålet med behandlingen och samtycker till den. Detta hindrar inte sådan lagring eller åtkomst som behövs för att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen begärt.

Skillnaden är alltså att det tidigare räckte med information om varför cookies används och hur besökaren stänger av dem i sin webbläsare — men nu måste besökaren aktivt samtycka till cookies. Alltså en väldans massa popup-fönster, men det går ju inte.

Det ska bli intressant att besöka Riksdagen.se 1 juli och se om de frågar innan de lagrar sessions-cookies i min webbläsare.

(Notera också formuleringen i sista meningen, som gör att du inte behöver be om samtycke till cookies om det är nödvändigt för att göra det användaren begär, exempelvis att logga in och fortsätta vara inloggad i en webbapplikation.)

Uppdatering: Feber skriver så här:

Det har dock varit rätt mycket kontroverser vad ”aktivt samtyckande” betyder och det kan räcka med att man ställer in sin webbläsare på att automatiskt godkänna cookies, vilket är default-inställningen på alla webbläsare på marknaden. Computer Sweden säger att den här frågan antagligen kommer att avgöras i domstol och innan det sker kommer åtminstone vi här på Feber inte att vidta några åtgärder när lagen träder i kraft.

Uppdatering: Det handlar förstås inte bara om cookies, även html5 local storage och annat som täcks in av de generella formuleringarna.

Läsarfråga: sessioner med AJAX

Jag fick en fråga från en av bloggens läsare:

Säg att jag har en AJAX-funktion som gör något i min MySQL-databas (t ex raderar en rad). AJAX-funktionen kallas från ett Javascript. Hela webbsajten är skyddad med https, session etc, men det hindrar ju inte att någon oinloggad kan kolla på mina scripts-filer om man råkar veta URL:en (eller gissar den), eller hur? Så vad är det som hindrar att man som oinloggad gör AJAX-calls direkt i adressfältet? Hur skyddar man i så fall känsliga operationer i AJAX-script?

Frågan baseras på ett missförstånd, och jag gör själv samma tankevurpa ibland, så jag tänkte försöka reda ut det här.

AJAX använder webbläsarens funktion XMLHttpRequest för att anropa webbservern och returnera svaret till en Javascript-funktion istället för att rendera om sidan i webbläsaren. Det är sedan upp till Javascript-koden att göra något med svaret.

Men själva AJAX-anropen och svaren är helt vanliga http- eller https-anrop, precis som när användaren klickar på en länk och webbläsaren hämtar en ny html-sida. Webbläsaren skickar även med samma cookies!

Eftersom webbläsarens session på servern identifieras med en sessions-cookie, kan du verifiera att besökaren är inloggad även om anropen görs med AJAX.

Inte ens cookie-flaggan HttpOnly ställer till det. (Flaggan ska göra så att cookien inte kan läsas av Javascript och bara skickas fram och tillbaka med http-anrop. Det spelar ingen roll, eftersom webbläsaren lägger till cookien vid AJAX-anrop.)