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.

Säkrare PHP-sessioner

PHP genererar ju ofta ett sessions-id som lagras som en cookie i webbläsaren. Jag läste just att man kan säga åt PHP att generera säkrare/bättre sessions-idn genom att ändra några inställningar i PHP.ini (alternativt ändra dem i ditt skript med functionen ini_set):

session.hash_function = 1

Default är 0, vilket betyder att MD5 används. Sätt värdet till 1 för att istället använda den bättre funktionen SHA-1.

session.entropy_file = /dev/urandom
session.entropy_length = 16

Då läser PHP 16 bytes från den ganska bra slumpkällan /dev/urandom istället för att som standard bara använda timestamp, IP-adress och något mer. Det gör det mycket svårare att gissa sig till ett sessions-id.

Om du vill ha extremt säkra sessioner, bör du förstås inte nöja dig med detta. Då bör du istället sätta inställningarna så här (rekommenderas ej om du inte har extrema säkerhetskrav då det ger sämre prestanda):

session.hash_function = sha512
session.entropy_file = /dev/random
session.entropy_length = 512

jQuery-events och ”return false”

Douglas Neiner på Fuel Your Coding skriver en bra artikel om varför du kanske inte borde avsluta alla jQuery-event-callbacks med ”return false” (för att undvika standardbeteendet). Rekommenderas om du vill lära dig mer om hur events propagerar.

In most situations where you would use return false what you really want is e.preventDefault(). … This does everything we want without prohibiting parent elements from receiving these events as well. The fewer restrictions you place on your code the more flexible it will be to maintain.

Det är inte uppenbart vem som är den bästa programmeraren

På den rätt så anonyma bloggen awesomeness länkar Hising till John Cooks artikel om varför programmerare som är 10 gånger mer produktiva än sina kolleger inte får 10 gånger mer betalt.

Intressant läsning, även den podcast med Joel Spolsky som John Cook länkar till.

But just when they are being their most productive, nobody says “Wow! You were just 100x more productive than if you’d done this the hard way. You deserve a raise.” At best they say “Good idea!” and go on.  It may take a while to realize that someone routinely comes up with such time-saving insights. Or to put it negatively, it may take a long time to realize that others are programming with sound and fury but producing nothing.

Något att tänka på för alla chefer, kanske.

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.)

Fackböckernas framtid

Via Daring Fireball hittar jag Mark Pilgrims intressanta replik till författaren David Flanagan (JavaScript: The Definitive Guide), som skriver om piratkopiering och att hans bokintäkter har fallit konstant under ett decennium. Diskussionen går kring piratkopiering och slutar med att fackboken som referensverk kanske är på väg att dö ut:

So is piracy really the problem? Is it even a problem? David has provided no evidence that his book is, in fact, wildly pirated. It’s not even available yet from dedicated pirate sites. But the larger, more disturbing question is this: who bothers to steal books these days when you can go to Stack Overflow or a web forum or, yes, even Google, type a question, and get an answer?

Jag köper själv ofta böcker som jag sedan aldrig läser. Ett av de senare exemplen är PHP 5 Recipes, som nog är ett klockrent fall av bok som inte kommer kunna säljas ”i framtiden”. Eller? Författaren Dan Miller pratar ibland i sin podcast och blogg om fysiska böcker som ett slags souvenir, som man köper för att ha i bokhyllan — inte för att läsa.

Stack Overflow kan självklart inte ersätta fackböcker som The Pragmatic Programmer och andra texter som inte är i form av korta svar eller enkla recept. När man vill lära sig något nytt gör man nog bäst i att läsa något som man inte visste att man borde veta, vilket utesluter en Google-sökning. Eller?

PS. Tillsammans med tidningen Success Magazine får jag varje månad Book Summaries, som är sammanfattningar av tre böcker. Detta får jag på papper, men även på en cd-skiva i form av ljudspår, mp3 och pdf. Jag är imponerad över att de levererar det på flera media och jag gillar verkligen flexibiliteten som det ger. Det är något för bokleverantörer att ta efter.

Stack Overflow-podcasten är tillbaka

En av mina tidigare favorit-podcasts inom webbutveckling är tillbaka efter ett års uppehåll! Stack Overflow-podcasten har bytt namn till Stack Exchange Podcast, men det är fortfarande Jeff Atwood och Joel Spolsky som diskuterar allt möjligt inom webbutveckling (men framförallt det som händer med Stack Overflow och dess systersajter inom Stack Exchange).

Både nya och gamla avsnitt (totalt 88 nu) finns att lyssna på eller ladda hem från SoundCloud (självklart också som RSS eller iTunes Podcast).

Internetworld testar webbhotell 2011

Varje år testar Internetworld svenska webbhotell i samarbete med Pingdom (min arbetsgivare). Nu har de publicerat resultatet av upptidstestet.

Av de sju webbhotell som får godkänt i testet är Levonline bäst med sina utmärkta 99,99 procent. Internet.se, Obido, Telia, Space 2U och FS Data får också mycket bra resultat, alla med en upptid på minst 99,97 procent.

Active 24, Binero och City Network är tre av de stora aktörerna som får anmärkningsvärt dåliga resultat i testet. Andra välkända webbhotell som One.com, Loopia och Crystone får också underkänt.

Notera dock att testet ”bara” löpt över 3 månader, och slumpen kan påverka en hel del. Jag gjorde själv ett liknande test med Pingdom under ett helt år, och testade även WordPress-prestanda under en månad. Detta var dock på betydligt färre webbhotell och servrar.

Scanna in anteckningar till Evernote

Michael Hyatt beskriver hur han skriver anteckningar på papper och sedan scannar in dem direkt till Evernote (och slänger pappret).

The value of this system for me is that it is the perfect blend of old-world and new-world technology. I can keep taking my notes the old-fashioned way and still have access to them electronically.

Läs artikeln: michaelhyatt.com

Dessa ytliga sociala medier

Jag fick nyligen barn och då började min ”fritid” krympa betydligt. Jag måste därför prioritera och välja bort de saker som inte tillför så mycket till mitt och familjens nya liv. För ett tag sedan ifrågasatte min fru om jag borde spendera så mycket tid på Twitter och Facebook, eller på att blogga.

Det är en bra fråga. Hur mycket sociala medier är tillräckligt? Är det ens nödvändigt? Vad är det egentligen bra för? Är det bara ett meningslöst tidsfördriv?

I senaste numret av tidningen Success skriver Darren Hardy om skillnaden mellan att kommunicera och att faktiskt bygga relationer:

While I might be communicating with tens of thousands of people every day, outside of encounters with my immediate family and business team, I am not really connecting or fostering very many real relationships at all. I’m what’s called a mile wide and an inch deep, and that’s not how you strike oil! I’ve been mistaking communication for connection.

Den alltid lika kloke Seth Godin använder inte Twitter, och han pratar i den här videon kort om att sannt nätverkande är bra, men falskt nätverkande är meningslöst:

Networking is always important when it’s real, and it’s always a useless distraction when it’s fake. What the Internet has allowed is an enourmous amount of fake networking to take place, and it’s so easy to be seduced by it because there’s a dashboard, a scoreboard. ”Look how popular I am!”

Han berättar också i en intervju varför han inte använder Twitter (men har en av världens mest besökta bloggar och svarar på hundratals personliga mail varje dag). Mycket tänkvärt!

Susan DiMickele på The High Calling träffar mitt i prick i ett blogginlägg och beskriver ett fenomen som jag känner igen alltför väl från de svenska events som jag har varit på:

Sometimes the irony of it all smacks me right in the face. Like during a recent conference. We broke for lunch, and I couldn’t contain my glee when I learned the hotel had free wireless. Yippee! I could spend my lunch hour catching up on my blogging and even send a few Tweets! Then it dawned on me. I’m here to network with people, not sit behind a computer. What’s the best use of my time? I should probably introduce myself to that woman in the back of the room. I think I recognize her.

Den tid jag spenderar på Twitter kan jag inte spendera på annat. Den fråga jag nu brottas med är hur använder jag min tid på bästa sätt? Hur får jag och familjen största möjliga ROI på min tid? Har sociala medier en plats, och hur använder jag dem på bästa sätt?

Hur resonerar du?