Kontakta supporten

Vi svarar via e-post, oftast inom två dagar.

Google reCAPTCHA kontrollerar det här inskicket mot missbruk; data skickas till Google. Skriptet laddas först när formuläret öppnas.

← Alla inlägg

Varför undantagslistan inte hashas

Att bygga en webbplats innebär att öppna den tjugo gånger om dagen. På en räknare med fyrtio besökare i månaden är halva statistiken författaren själv. Därför finns det en inställning: räkna inte besök från min egen adress.

Överallt annars i tjänsten hashas adresser med ett hemligt salt och ett datum, och själva adressen når aldrig lagringen. På just det här stället lagras den exakt som den matades in, i klartext. Det är ett medvetet beslut, och det förtjänar att sägas rakt ut i stället för att lämnas åt någon att upptäcka.

Den version som prövades först

Den första implementeringen lagrade en kontrollsumma av adressen, i linje med allt annat. Den fungerade, den lagrade mindre och den var nästan oanvändbar: de flesta hemanslutningar får en ny adress varje dag. Undantaget var korrekt i samma ögonblick som det ställdes in och värdelöst nästa morgon.

Det som klarar ett dagligt byte är ett intervall — vanligtvis leverantörens /24 eller /16, som förblir detsamma medan den sista delen byts ut. Och ett intervall kan inte jämföras som en kontrollsumma. Hashning förstör ordningen med avsikt, och ”ligger den här adressen inom det här intervallet” är en fråga om ordning. Det finns ingen smart väg runt det; de två kraven pekar åt motsatta håll.

183.10.1.7283.10.1.94383.10.1.203ändras varje dagförblir sammaen kontrollsumma förstör ordningen — och ”ligger detta inom det intervallet” är en fråga om ordning

Därför lagras intervallet som det matades in, normaliserat, tillsammans med sina två gränser på sexton byte vardera, och ett enda BETWEEN avgör. IPv4 skrivs i sin IPv6-form, så att båda adressfamiljerna har samma bredd och en enda jämförelse täcker båda.

Varför avvägningen är godtagbar här

Det som lagras är ägarens eget nätverk, som ägaren själv har skrivit in, får se visat och när som helst kan radera. Det är inte en besökares adress. Integritetspolicyn säger samma sak med samma ord, eftersom alternativet — att beskriva tjänsten som om den hashar allt och i tysthet undanta just detta — vore ett sådant påstående som stämmer i stora drag men är värt mindre än inget påstående alls.

Gränsen är tio poster per räknare: tillräckligt för hemmet, kontoret och mobilen, och så få att listan inte kan bli ett allmänt lager av adresser.

Den andra sorten, för sådant som flyttar sig

Viss trafik har en stabil identitet men en instabil adress: en drifttidsövervakare, en tjänst i ett chattprogram som hämtar länkförhandsvisningar, en kontrolltjänst. Inget intervall fångar dem.

För dem matchar undantaget i stället en del av webbläsarens identifiering. Om du anger uptimerobot fångas hela strängen som den skickar. Minsta längd är fyra tecken, eftersom ett fragment på två bokstäver skulle förekomma i nästan varje identifieringssträng och stänga av räknaren helt.

Den allmänna poängen

En integritetsdesign är en uppsättning avvägningar, och det intressanta är de ställen där en regel fick böjas. Regler som aldrig böjs betyder oftast att ingen ännu har prövat dem mot ett verkligt krav.

Det man ska undvika är att böja en regel i tysthet. Ett hashat fält som egentligen inte är hashat, men som beskrivs så i dokumentationen, är sämre än ett vanligt fält som beskrivs som det är — det förbrukar förtroende som det inte har förtjänat, och förr eller senare upptäcks det av någon som inte räknade med att behöva kontrollera.

Annons