Kategoriarkiv: Geek

Password Fail

Her er ditt passord

Nylig gikk jeg gjennom nærmere 150 nettsider og byttet passord på kontoene mine. Listen over netsidene har jeg i «safen». Som mange andre bruker jeg et eget verktøy for å holde rede på passordene. Jeg benytter LastPass, men det finnes mange tilsvarende med eller uten krav til nett. Det sikreste er selvsagt en lokal safe, slik at man unngår mye av problematikken forbundet med en online løsning, men det handler også om brukervennlighet og tilgang. Derfor har jeg sterke, unike passord på samtlige sider jeg benytter, og kanskje det sterkeste av dem alle er for «safen» selv.

De flest passord er basert på et system som jeg selv har kommet på. Ettersom det følger et system er det selvsagt mulig å finne et mønster, men med mindre et program er skrevet for nettopp dette anser jeg de som svært usannsynlig at noen tar seg bryet. Litt samme logikk som at innbruddstyver heller går inn i villaene noen hundre meter unne leiligheten min. Det er enklere.

Etterhvert som jeg gikk gjennom listen av nettsider oppdaget jeg at svært mange har dårlige rutiner rundt sikkerheten, enten de oppbevarte passordene uforsvarlig (kanskje i klartekst) eller hadde regler som begrenset hvor gode passordene kan være. Mange sendte en epost med bekreftelse på endret passord, hvor passordet var lagt ved i eposten i klartekst. Slik som også noen nettsider gjerne gjør ved registrering. Det er flere grunner til at dette er en dårlig idé:

  • Eposten blir lagret i flere systemer = passordet er lagret i flere systemer. I klartekst.
  • Brukeren trenger som oftest ikke bli påminnet sitt eget passord. Han/hun har tastet det inn selv, og ingen andre trenger vite om det.
  • Selv etter at eposten er slettet vil høyst sannsynlig flere kopier eksistere i andre systemer.
  • Sikkerheten kan være brutt allerede før brukeren har lest eposten.

For å nevne noen.

Det er ingen grunn til å sende passord i eposten.

Når brukeren velger sitt passord ved registrering har vedkommende sannsynligvis god kontroll over hva dette passordet er. Det er typisk tastet inn i to felt, hvor det også gjøres en sjekk om de er like. Hvordan passord håndteres etter dette er litt forskjellig, men ofte blir det håndtert på en dårlig måte.

Om passordet sendes tilbake til den nye brukeren på epost er sikkerheten allerede svekket. Det er utenfor kontroll, og man kan ikke lenger garantere at kun brukeren vet hva passordet er. Det vil ligge kopier av eposten med passordet i flere systemer, i tillegg til at det kan være snust opp på nettverket. Og avsender har ingen kontroll over hvem som har tilgang til mottakers epost.

Skulle brukeren glemme sitt passord bør det være en smal sak å ha en mekanisme for å sette et nytt passord. En vanlig måte å løse dette på er å enten sende brukeren et nytt og midlertidig passord (gjerne med tvang om nytt passord etter innlogging) eller ved å sende en lenke til inntasting av nytt passord (som selvsagt kun er gyldig en viss tid).

Passordet skal ikke lagres!

I løpet av de siste årene har det vært mange saker i media rundt kontoer på avveie. Felles for de fleste av disse har vært dårlig sikkerhet i systemene som har håndtert kontoinformasjon. En gjenganger har vært passord lagret i en database, som noen har fått tilgang til.

De som ikke kjenner til mulighetene lurer gjerne på hvordan man kan bekrefte et passord uten å lagre det. En løsning er å lagre en hash av passordet. En hash er veldig forenklet et resultat av en hashfunksjon med passord som input. Det skal ikke være enkelt å finne ut hva input var, helst umulig. Altså en enveis funksjon.

Tidligere anså man med hash problemet som løst. Et passord ble kjørt gjennom en funksjon som ga en hash som resultat. Denne hashen ble så lagret i en database, sammen med brukernavn og eventuelle andre data om brukeren. Ved innlogging tar man så passordet brukeren taster gjennom samme funksjon og sammenligner resultatet med det som er lagret for brukeren. Er de like vet man så at brukeren har tastet riktig. Og kun brukeren vet passordet. Eller?

Problemet med denne løsningen, som fortsatt brukes i stor grad, er at samme funksjon brukes i mange systemer og samme passord gir alltid samme resultat. Dermed kan man gjøre en del ting for å finne ut hva passordet egentlig er. Med brute-force kan man lage en såkalt rainbow-tabell, en tabell som inneholder hasher for de fleste kombinasjoner et passord kan bestå av. Dermed kan man slå opp en hash i denne tabellen for å finne riktig passord. Selv uten en slik tabell kan man med dagens hardware finne et passord lagret med en svak hashfunksjon relativt raskt.

Selvsagt har noen tenkt ut noen smarte løsninger for dette. En mer komplisert hashfunksjon kan benyttes sammen et såkalt salt. Et salt er kort og godt tilfeldig data. Saltet lagres sammen med hashen (beregnet av hashfunksjonen med passord og saltet som input), men uten passordet. Ved innlogging benyttes samme salt til å beregne en hash sammen det inntastede passord, for deretter å kontrollere om de to hashene er like. Ettersom saltet er tilfeldig for hver bruker blir det også utrolig mye vanskeligere å finne frem til riktig passord med brute-force. En rainbow-tabell må dermed bestå av samtlige kombinasjoner for både hash og salt, som i praksis vil kreve fantastisk mye tid.

De fleste gode rammeverk har innebygd funksjonalitet for dette, eller tilbyr det ved tredjeparts løsninger.

Svakeste ledd

Som nevnt trenger skal ikke systemene lagre passordet. Dermed er også de fleste regler som nettsider har lagt på passordene lite nyttige. De tjener ikke til annet enn å gjøre sikkerheten svakere. Eksempel er maks lengde på passord. Ettersom en hash typisk har en fast lengde, uavhengig av passord, ser jeg liten grunn til å legge slike restriksjoner på brukeren. Det samme gjelder også bruken av tegn i passord, enten det er krav for eller mot visse tegn. Noen nettsider krever alle tegn er enten gyldige bokstaver eller tegn, og har dermed effektivt begrenset antall mulige kombinasjoner betraktelig. Er det krav om visse tegn (f.eks et punktum) er heller ikke dette heldig, siden man da oppgir hvilke tegn som må være inkludert, en joker mindre å finne ut av for den med uærlige hensikter.

I tillegg er det slik at de fleste velger et passord de kan huske. I dag har gjerne de fleste brukere mange kontoer, passord og pinkoder de skal huske på. For å gjøre dette enklere velger de gjerne noe som er lett å huske. F.eks «Bamse1». Når passordet skal byttes? «Bamse2». Ved å ha strenge regler for hvordan passord skal bygges opp velger mange minste motstands vei, og finner på et passord som er veldig lett å huske, men også veldig lett å finne ut av. Spesielt kravet om at passord må endres med jevne mellomrom legger opp til denne praksisen.

Sikkerhet er et race mellom flere parter. Mens sikkerheten stadig blir bedre, oppdages det også hele tiden smartere metoder for å komme rundt sikkerheten. Som oftest er brukeren selv det svakeste leddet, men noen ganger klarer nettstedet selv å gjøre seg svakere. Når det er så lett å heve sikkerheten, og vi stadig ser kontoinformasjon på avveie, finnes det ingen unnskyldning for ikke ta grep for sine egne nettsider. Og kommer du over en nettside som åpenbart har dårlig sikkerhet kan det lønne seg å si ifra om dette. Ikke bare for din egen del, men også for andre.

Benytter du samme passord flere steder er du spesielt utsatt. Men det gjør du vel ikke?

Et lite knippe Android apps

Jeg fikk nylig en forespørsel om anbefalinger til apps på Android. Ettersom kanskje flere kunne ha nytte av dette har jeg like så godt lagt ut listen her. Alle appene er gratis eller lite versjoner (noe funksjonalitet kun i fullversjon) med mindre annet er oppgitt.

Jeg har delt appene opp i følgender kategorier (noen passer flere steder): Nyttig Kommunikasjon Media Spill Sosialt/nettverk Mindre nyttig

Nyttig: 3G Watchdog: Lar deg overvåke datatrafikk. Kan også sette grense for bruk.

App 2 SD Free: Kjekk app som sier ifra om en app kan flyttes til SD. Mest nyttig for de med lite internminne, som f.eks HTC Desire.

Battery Graph: Viser en enkel graf over batteri over tid.

Camera360 Free: En av de bedre appene heg har testet for kreative effekter med kamera. Har mange muligheter.

Chrome to Phone: Gir mulighet for å sende tekst, linker, bilder mm til mobilen fra Chrome.

Dropbox: Tilgang til filer på Dropbox fra mobilen. Jeg har flere bruksområder for denne, men først og fremst gir det meg en rask måte å få kopiert små filer mellom pc og mobil.

G PVR: Lar meg se TV-guide og sette pgrogram til opptak på Get PVR boksen. I praksis bare en frontend for http://m.get.no.

Gulesider: Navn, adressser, telefonnummer, kart osv. Noen små bugs, men veldig bra. En nyttig funksjon er å slå opp ukjente nr ved anrop.

Kart (Google Maps): Kart på mobilen brukes oftere enn man skulle tro. Og med Street View er det litt ekstra moro: Street View: http://market.android.com/details?id=com.google.android.street. Nyttig og kunne se et område før man drar dit, så kjenner du deg igjen når du kommer frem.

MatPrat: En haug med oppskrifter.

Mileage: Historikk over bensin-/dieselforbruk. Med alt som er fornuftig av info og litt til.

Number Saver: Kjekk liten app som gjør det lettere å notere under samtale.

OI Shopping list: Den beste handleliste appen jeg har prøvd. SpringPad har også tilsvarende funksjonalitet, men ikke så smooth som denne.

Prisjakt: Prisjakt har etterhvert blitt den beste prisguiden på nett. Nå er den det også på mobil. Jeg har spart en del tusen på denne app’en ved å sjekke pris mens jeg står i butikk.

Quick Settings: Gir rask tilgang til de viktigste instillingene ved å dra ned statusbar på skjermen. Kan tilpasses eget behov.

RunKeeper: Hold oversikt over treningen med en enkel app. Er på sitt beste ved jogging, sykling og andre aktiveter hvor GPS kan brukes. Toveis kommunikasjon med server på runkeeper.com. Andre alternativ kan være cardiotrainer og endomondo (jeg har ikke prøvd noen av disse).

Scandinavian Keyboard: Jeg bruker SlideIt selv, men dette er et veldig alternativ hvis du vil ha et «klassisk» tastatur.

screenshot: Gjør det enkelt å ta screenshot av på mobilen. Krever root.

ShareMyApps: En av de enklere appene for å lage en liste over apps. Som f.eks denne listen her.

SlideIT Keyboard (€4,50): Don’t type. Slide. Verdt hver eneste krone/euro. Norsk tastatur: SlideIT Norwegian Pack

SMS Backup+: Legger alle SMS og MMS i GMail med egen label. Sammen med søkbarheten til Gmail er det lettere enn noengang å finne igjen gamle SMS. Har også mulighet til å gjenopprette fra Gmail.

Springpad: Genial app og nettside som erstatning for blant annet gule lapper. Jeg bruker det som en kombinasjon av gule lapper og bokmerker.

SwiFTP: Sett opp mobilen som FTP server. Eneste kabel en mobil trenger er lader.

Tasker (£3,99): Hva denne appen ikke lar deg gjøre er ikke verdt å gjøre. Sett opp alle mulige regler for hvordan mobilen skal oppføre seg under gitte situasjoner. Eksempel: vis meny med oversikt over aktuelle apps når hodetelefoner plugges i, demp lyd når du er på jobb (selvsagt tilbake igjen når du forlater jobb), automatisk skru av lyd på møter (via kalender), og så videre. Her er det (nesten) bare fantasien som setter grenser.

Titanium Backup: Tar backup av apps og instillinger. Krever root.

Trafikanten: Trafikanten i lomma. Får jobben gjort.

Where’s My Droid: Hjelper deg å finne igjen mobilen, og/eller få den til å ringe ved å sende SMS eller epost. Har også en funksjon for å sende SMS ved bytte av SIM kort.

Kommunikasjon: GO SMS Pro: Om du ikke er fornøyd med den innebygde appen for meldinger kan jeg anbefale denne. Med popup, tema og masse tilpasningsmuligheter.

Glympse: Send info om hvor du er på SMS, epost eller link. Lar deg selv styre hvor lenge brukere kan se deg. Realtime.

Gmail: Gmail er en naturlig del av enhver Android telefon/nettbrett.

Media: IMDb: Finn info og rating på filmer. Savner mulighet for å logge inn og gi rating fra mobilen, men ellers en veldig god app.

Last.fm: Scrobble låter til last.fm. Støtter de fleste musikkavspillere, også stock. Også nyttig for å finne info om blant annet artister og album.

Listen: Podcast klient fra Google. Støtter ikke last.fm. 🙁 Blir enten elsket eller hatet.

NewsRob: Feedleser med toveis synkronisering mot Google Reader. Offisiel Google Reader er også en god app, men NewsRob har noen ekstra funksjoner jeg liker.

Next Episode (3€): Genial nettside for de som ser mye TV-serier har nå kommet med en genial app. Følg serier og hold deg oppdatert på hvilke episoder som er sett og ikke.

SoundHound: Det finnes flere apps som lar brukeren finne igjen en sang ved å spille den for mobilen. Men SoundHound kan du synge til selv, eller bare nynne! Ikke en jeg bruker ofte, men det hender. Gratisversjonen har begrensinger på antall oppslag og noen features. Fullversjon koster $4,99.

Spotify: Spotify på mobilen. Krever Unlimited abbonoment på 99,-/mnd for full bruk. Støtter også lokal musikk, men organiserer dette veldig dårlig slik at alt av lydfiler dukker opp. Dette inkluderer ringetoner og lydfiler for programmer på SD.

YouTube: YouTube i lomma. Nuff said.

Spill: Angry Birds, Angry Birds Seasons og Angry Birds Rio: Tidenes mest suksessrike spill på mobil. Gratis på Android, men litt irriterende reklame.

Robo Defense ($2,99): Tower Defense spill. Blir noe ensformig etter cirka 50+ timer.

Sosialt/nettverk: Facebook: Facebook i lomma.

Foursquare: Foursquare lar deg «sjekke» inn på steder du besøker. Med ankomsten av Facebook Places mistenker jeg at denne har mistet mange brukere. Bruker den ikke lenger selv.

LinkedIn: LinkedIn i lomma.

TweetDeck: Verdens beste Twitter klient etter min mening. Med støtte for flere kontoer og kolonner er den overlegen.

WordPress: Skriv/rediger poster og sider. Håndter og svar kommentarer. Sjekk trafikk. Alt via mobilen.

Verktøy: Hash Droid: Verktøy for å lage en hash med mange funksjoner fra tekst eller fil. Jeg kan forstå at ikke har bruk for denne, men jeg bruker den ofte nok.

Docs: Google Docs på mobilen. La deg åpne, opprette, endre og slette dokumenter av forskjellige typer på mobilen.

QR Droid: Les og lag QR koder via mange kanaler.

Mindre nyttig: Binary clock widget: Widget som viser tiden binært. Geeky!

FatBooth: Legger cirka 80 kilo på ansiktsbilder. Ikke populær blant koner og mødre. Trust me.

Flikie Wallpapers HD: Vannvittig mange bakgrunnsbilder lett tilgjengelig.

Godville: ZPG (Zero Player Game). Nyttverdi = 0. Men noen morsomme kommentarer iblant. Ok, jeg vet ikke helt hvorfor denne er med på listen.

Goggles: Googles har en del morsomme triks tilgjengelig. Høydepunktet for min del var når jeg tok bilde av et bilde jeg hadde tatt av moske, og den fortalte meg hva moskeen het med tilhørende info. Kan ogsø løse sudoku ved å ta et bilde av brettet. Den kan også oversette tekst og hente ut kontaktinfo ved å ta bilde av visittkort med mer. Prøv den.

Google Sky Map: Verdensrommet i lomma. Prøv den. Om ikke annet som en show-off app.

GPS Status: Få diverse info fra GPS’en.

GPS Test: Enda en «Få diverse info fra GPS’en». Husker ikke hvilen jeg likte best, de er ganske like.

Libra: Lar deg følge vektuvikling med en pen graf. Bare legg inn vekten din (hver dag, ukentlig eller en gang iblant), så ordner den resten. Om ikke annet så kan det være en vekker om grafen stiger jevnt og trutt. 🙂

Norsk Tipping Mobilspill: Den styggeste appen jeg har. Min første selvlagde app for Android var penere enn denne. Men det er også den eneste og offisielle Norsk Tipping app’en til Android. Hvorfor de ikke har kopiert blindt fra iPhone versjonen er et stort mysterium.

PS3 Trophies: Egen app for Playstation 3 trophies. Begrenset bruksverdi.

reddit is fun: Les reddit på farten.

Ringdroid: Rediger og lag dine egne ringetoner fra mp3 filene dine.

Dette er en høyst subjektiv liste over apps jeg har, eller har hatt, på min mobil. Har du forslag til andre apps som burde være med, eller kanskje bedre alternativer til disse, er du velkommen til å legge igjen en kommentar om dette.

Hotlinkere er som oftest fjortiser

Jeg skrev tidligere en liten innføring i hvordan jeg har stoppet hotlinkere fra å vise bilder liggende på bloggen min. Der beskrev jeg hvordan jeg brukte .htaccess filen for å hindre de jeg la til i listen. Dette fungerer glimrende og har egentlig ingen store ulemper. Jeg oppnår det jeg vil, som altså er å hindre uvedkommende i å stjele båndbredden min.

Men det kan bli så mye bedre. Jeg savner nemlig et par ting. Nemlig å se hvilke som blir fanget opp er tungvint, og ikke minst kunne kontrollere tilgang raskt og effektivt basert på data i sanntid.

Eneste måten jeg kan se hvem som snylter på er nemlig å gå gjennom logger, for så å plukke ut de som synder mest (eller bruke fantastisk lang tid på å lete i loggene…). Og ettersom jeg ønsker å kunne se hvorvidt tiltaket virker (eller bare bidrar til gratis reklame for meg) er det ingen god løsning å lete i logger som kun viser fordeling på måned.

Men det var før. Nå har jeg gjort noen små endringer som fungerer enda bedre. Kan det fungere bedre enn glimrende sier du? Javisst. Følg med.

I den nye versjonen har jeg byttet ut loggfilen med et par tabeller i databasen min. En tabell styrer tilgang og en er for logg. htacces filen er endret til å sende alle forespørsler som ikke er fra eget domene eller et fåtall andre, deriblant bildesøk fra google, til et php script som tar seg kontroll og visning av bilder. Alt som som routes til scriptet logges med nødvendig info.

Tabellen som styrer tilgang har et flagg som forteller om det aktuelle domenet skal få tilgang til bildene. Om domenet ikke ligger i tabellen fra før blir det lagt til, med tilgang. Ønsker jeg å fjerne eller gi tilgang kan jeg når som helst endre dette. Verdien fra denne tabellen brukes for å vise det riktige bildet eller denne snasne dama.

Tabellen for logging inneholder hver eneste forespørsel som blir gjort med henvisende url, bildets url, domeneid koblet til tilgangstabellen, og hvorvidt tilgang er gitt. Dermed har jeg mulighet til å trekke ut det jeg trenger av statistikk. Og statistikk liker jeg, så det viser jeg med all data jeg har tilgengelig. Jeg har derfor statistikk fordelt på domener, bilder, tilgang, tidspunkt, i topplister og siste treff. IP og denslags logger jeg ikke.

Og hvis noen lurer på overskriften kan jeg fortelle at blogg.no står for brorparten av hotlinkere mot denne bloggen, sammen med et par forum hvor brukere har hotlinket avatar bildet sitt fra bloggen min. De bytter nok ganske snart…

Se forøvrig mer om hot linking her.

Oppdatering: Koden for php scriptet er lagt ut. Husk å endre filen til php, samt legge inn server, brukernavn, passord og database. Jeg benytter samme database som for WordPress, men med annet prefix for å skille tilhørighet for tabellene fra hverandre.

PHP (scriptet i filen du finner over):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
< ?php
$hotlink['hotlinkimage'] = 'donthotlink.jpg';
 
$hotlink['url'] = '';
if(!empty($_GET['url'])) {
	$hotlink['url'] = $_GET['url'];
 
 
	$hotlink['ref_domain'] = '';
	$hotlink['referrer'] = '';
	$hotlink['fullurl'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$hotlink['url'];
 
	// mod_rewrite should have already established that it is a hot-link.
	// This is a double-check. We need to capture the referrer, anyway.
 
	if (!empty($_SERVER['HTTP_REFERER'])) {
		$hotlink['referrer'] = $_SERVER['HTTP_REFERER'];
		$hotlink['ref_domain'] = substr($hotlink['referrer'], 7, strpos($hotlink['referrer'], "/", 7) - 7);
	}
 
	// splitting the referrer into a domain part, saves us searching for multiple variations.
	// so long as your host name appears somewhere in the domain part, it's not a hot-link.
 
	if (!stristr($hotlink['ref_domain'], $_SERVER['HTTP_HOST'])) {
 
		$domain = getDomain($hotlink['ref_domain']);
 
		if($domain->allow){
			log_hotlink_to_db($domain, $hotlink['referrer'], $hotlink['fullurl'], 1);
			serveImage('../'.$hotlink['url']);
		}
		else{
			log_hotlink_to_db($domain, $hotlink['referrer'], $hotlink['fullurl'], 0);
			serveImage($hotlink['hotlinkimage']);
		}
	}else{
		serveImage($hotlink['url']);
	}
 
}else{
	// No url? Redirect them to the main site.
	header( "Location: http://" . $_SERVER['HTTP_HOST'] );
}

En enkel klasse for domene. Kunne godt laget en klasse for referrer også, men er ikke nødvendig.

46
47
48
49
50
51
// Simple class for domain
class Domain{
	public $id;
	public $domain;
	public $allow;
}

Logge til db.

53
54
55
56
57
58
59
60
//log the attempt to db
function log_hotlink_to_db($domain, $referrer, $url, $allowed){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlink_log (domain_id, referrer,url,allow) VALUES (?,?,?,?)") or die ("Failed to prepare the statement!");
	$statement->bind_param("issi", $domain->id, $referrer,$url,$allowed);
	$statement->execute();
	$statement->close();
}

Et par funksjoner for å håndtere domener.

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
function getDomain($ref_domain){
	if (preg_match("/^www./i",$ref_domain)){
		// WWW. is deprecated anyway...
		$ref_domain = preg_replace("/^www./i", "", $ref_domain);
	}
 
	$domain = new Domain();
	$domain->id = 0;
	$domain->domain = $ref_domain;
	$domain = checkDomain($domain);
	if($domain->id == 0){
		insertNewDomain($domain);
		$domain = checkDomain($domain);
	}
	return $domain;
}
 
function checkDomain($domain){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("SELECT id, allow FROM hotlink_access WHERE domain = ?") or die ("Failed to prepare the statement!");
	$statement->bind_param("s", $domain->domain);
	$statement->execute();
	$statement->bind_result($id, $allow);
	if($statement->fetch()){
		$domain->id = $id;
		$domain->allow = $allow;
	}
	$statement->close();
 
	return $domain;
}
 
function insertNewDomain($domain){
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlink_access (domain,allow) VALUES (?,1)") or die ("Failed to prepared the statement!");
	$statement->bind_param("s", $domain->domain);
	$statement->execute();
	//$statement->affected_rows
 
	$statement->close();
}

Vær så god, her har du et bilde. Håper du blir fornøyd.

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
function serveImage($url){
	if (!empty($url) and file_exists($url)) {
		$hotlink['img_type'] = end(explode('.', $url));
		if (strcasecmp($hotlink['img_type'],'png') == 0 ){
			$hotlink['img'] = imagecreatefrompng($url);
			imagesavealpha($hotlink['img'],true);
		} elseif (strcasecmp($hotlink['img_type'],'jpg') == 0 || strcasecmp($hotlink['img_type'],'jpeg') == 0) {
			$hotlink['img'] = imagecreatefromjpeg($url);
		} elseif (strcasecmp($hotlink['img_type'],'gif') == 0) {
			$hotlink['img'] = imagecreatefromgif($url);
		} else {
			trigger_error("HOTLINK - Image $url is of unknown type", E_USER_ERROR);
		}
		//TODO Other file types?
 
	} else {
		// Log image not found!
		trigger_error("HOTLINK - Image $url was not found", E_USER_ERROR);
	}
 
	// send the image to the browser..
	if ($hotlink['img_type'] == 'png') {
		header('Content-type: image/png');
		imagepng($hotlink['img']) or die("there was an error. sorry about that...");
	} else {
		header('Content-type: image/jpg');
		imagejpeg($hotlink['img']) or die("there was an error. sorry about that...");
	}
	imagedestroy($hotlink['img']);
}

Skaff en connection til db. Det er her data om server, brukernavn, passord og database skal inn.

135
136
137
138
139
140
function getDBConnection(){
	$db_connection = new mysqli("server", "username", "password", "database") or die ("Failed to obtain connection to db!");
	return $db_connection;
}
 
?>

Databasetruktur (SQL) er som følger:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE hotlink_access (
  id INT(11) NOT NULL AUTO_INCREMENT,
  DOMAIN VARCHAR(50) NOT NULL,
  allow INT(11) NOT NULL,
  PRIMARY KEY  (id)
)
 
CREATE TABLE hotlink_log (
  id INT(11) NOT NULL AUTO_INCREMENT,
  domain_id INT(11) NOT NULL,
  referrer VARCHAR(200) NOT NULL,
  url VARCHAR(100) NOT NULL,
  allow tinyint(1) NOT NULL,
  TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY  (id)
)

Egentlig er det også en timestamp i access tabellen også, men den trengs strengt tatt ikke da samme data ligger i loggtabellen.

Til slutt den delen som gjør selve redirekten: .htaccess filen:

1
2
3
4
5
6
7
8
# BEGIN Hotlink stopper
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?xmasb\. [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://((.+)\.)?google\.(.+imgres) [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://((.+)\.)?google\.(.+reader) [NC]
RewriteRule ^(.*)\.(gif|jpe?g|png)$ http://%{HTTP_HOST}/hotlink/hotlink.php?url=$1.$2 [R,NC,L]
# END Hotlink stopper

Alle request som ikke er direkte på bildene (gif|jpe?g|png), via xmasb, google’s bildesøk eller google reader blir sendt til scriptet. Scriptet sørger for resten. Her kan alle tillatte domener legges inn, så det ikke brukes unødig prossesering på tillatte domener. Eksempel på andre domener som kanskje bør ligge her er RSS lesere (Google, Bloglines, Netvibes f.eks) og andre sider for bildesøk. Det fine med denne fremgangsmåten er at det er lett å oppdage disse underveis, uten at de er utestengt i mellomtiden.

Det er lett å bare legge inn Google som tillatt domene i htaccess filen, men husk at det også eksisterer noe som heter sites.google.com. Scriptet får et par treff om dagen derfra.

Oppdatering 2: Har gjort en liten endring til på scriptet mitt. Ettersom blant annet blogg.no er kraftig overrepresentert i loggene er det like greit å sperre de ute med en gang. Jeg kunne selvsagt gjort dette via htaccess filen, men får å få med loggingen tar jeg de via scriptet likevel. For å gjøre dette har jeg gjort følgende endring i insertNewDomain funksjonen:

138
139
140
141
142
143
144
145
146
147
148
149
150
function insertNewDomain($domain, $allow = 1){
	global $hotlink;
	if(anyNeedleInString($domain->domain, $hotlink['blockedBaseDomains'])){
		$allow = 0;
	}
	$db_connection = getDBConnection();
	$statement = $db_connection->prepare("INSERT INTO hotlinkaccess (domain,allow) VALUES (?,?)") or die ("Failed to prepared the statement!");
	$statement->bind_param("si", $domain->domain, $allow);
	$statement->execute();
	//$statement->affected_rows
 
	$statement->close();
}

AnyNeedleInString ser slik ut:

187
188
189
190
191
192
193
194
function anyNeedleInString($haystack, $needle){
	foreach($needle as $key => $search_needle) { 
		if(stristr($haystack, $search_needle)) { 
			return true;
		}
	}
	return false;
}

Og så er det bare å definere en array som inneholder de domener man ikke vil ha med:

3
$hotlink['blockedBaseDomains'] = array('blogg.no', 'nettby.no');

Her illustrert med blogg.no og nettby.no. Dermed slipper jeg å håndtere de som tilhører diverse plattformer. Smart, ikke sant?

Hvordan jeg stopper hotlinkere – og får gratis reklame for xmasb.com

En gang i blant sjekker jeg statistikk for bloggen. Etter som årene har gått (og hyppigheten på bloggingen har gått noe ned) har jeg sluttet å lese statistikk annen hver dag. Men det hender jeg sjekker litt, mest for å se etter endring i mønsteret, og hvilke poster og sider som mottar mest trafikk. En sjelden gang iblant går jeg litt dypere til verks og sjekker da hvilke ressurser på serveren som får mest trafikk, sånn som bilder.

Når jeg gjorde dette i går fant jeg ut, ikke overraskende, at det er mye trafikk fra diverse nettsider som henter bilder fra meg. Begrepet hotlinking har jeg vært innom før, for snart tre år siden satte jeg i gang tiltak. Men som så mye annet krever det en viss vedlikehold, så det var på tide å gjøre noen grep igjen. Etter tre år skulle det vise seg å være mange som stjeler båndbredde av meg.

Mens jeg tidligere har tatt i bruk et bilde som forteller at det er slemt å hotlinke syntes jeg dette var en gyllen mulighet for to ting: å spre reklame for bloggen min (selv om jeg har cirka null kontroll over hvor den blir vist), og en mulighet for å være litt morsom på andres bekostning. Sistnevnte fikk umiddelbart høyest prioritet av åpenbare grunner.

Her er et bilde jeg tidligere har brukt for de som hotlinker fra meg: Hotlink Text

Det har jo absolutt gjort nytten sin. De færreste ønsker å vise det fremfor det de egentlig ville ha, som kanskje var en søt valp eller et juletre. Så de bytter til noe annet, eller kopierer bildet fra meg. Å kopiere bilder fra bloggene til andre er et tema vi ikke trenger å gå inn på nå. Så lenge det ikke er bilder jeg selv har tatt/laget tar jeg det uansett ikke så tungt.

Fremgangsmåten for å hindre hotlinkere var omtrent som forrige gang, men med en liten tvist: nytt bilde og logging av misbrukere. Loggingen er ikke så viktig i seg selv, og jeg kommer nok til å endre litt hvordan den virker også, men det kan være grei info å ha når jeg vil vite omfanget av hotlinking.

Det morsomme er bildet. Nedenfor følger et par eksempler på bilder som ofte blir hotlinket til på xmasb.com:

Jeg kan godt forstå at disse bildene kan være attraktive å bruke. Men jeg synes da bildet jeg serverer i stedet er mye morsommere. Det ser slik ut:

Don't hotlink xmasb.com!

Nå vil det ikke spare noe særlig på båndbredden i seg selv ved å servere et annet bilde, men de fleste velger å ikke bruke dette bildet av en eller annen grunn… Jeg kunne servert for eksempel «403 Forbidden» til requestet, og dermed spart hele båndbredden, men det er jo ikke noe moro. Og det gir meg litt ekstra reklame også. I oktober hadde bloggen like over 10000 visninger av bilder fra xmasb.com på andre domener. De fleste av sidene viser nå forrige viste bilde, eller har byttet.

Så hvordan har jeg egentlig gjort dette? Det er ikke vanskelig. Akkurat som forrige gang endret jeg .htaccess filen for å få effekten jeg ville ha. I slutten av denne filen la jeg til følgende:

BEGIN Hotlink stopper

RewriteEngine on RewriteCond %{HTTP_REFERER} ^(.+.)?blogg.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?blogspot.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?clublife.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?livejournal.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?myspace.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?nettby.no/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?trykker.com/ [NC,OR] RewriteCond %{HTTP_REFERER} ^(.+.)?wordpress.com/ RewriteRule ^(.*).(gif|jpe?g|png)$ http://%{HTTP_HOST}/hotlink/hotlink.php?url=$1.$2 [R,NC,L]

END Hotlink stopper

For bedre lesbarhet har jeg fjernet de fleste fra listen. Kort fortalt gjør denne lille snutten at alle forsøk på å vise bilder fra oppgitte domener/sider fører til et kall av hotlink.php, som igjen serverer dama over og logger requestet. Jeg logger da url for siden som kaller, IP for besøkende av siden, tidspunkt og hvilket bilde som er forsøkt hotlinket. Mest sannsynlig kommer jeg også til å endre oppsettet senere til også å logge de som får lov til å vise bilder, for å kunne få en oversikt over disse og eventuelt lett blokkere flere.

Dersom logging ikke trengs eller er ønskelig kan det lett byttes ut med et bilde istedet for php script, men da er det viktig å legge til en linje som tillater bruk av det ene bildet hos de som egentlig ikke skal kunne se bilder fra bloggen. Følgende linje kan da legges inn rett før Rewriterule:

RewriteCond %{REQUEST_URI} !http://%{HTTP_HOST}/wp-content/uploads/hotlink.jpg

Denne tillater visning av bildet hotlink.jpg. Husk også å legge til en OR for siste i listen før denne.

Tidligere har jeg forsøkt å stoppe alle requests bortsett fra et knippe jeg tillatter, men dette har ikke fungert så godt som håpet. Problemet er blant annet lesere av feeden. Det er ikke noe problem å tillate Google, men hva med alle andre? Hvor mange og hvilke er det? Jeg har ihvertfall ikke en god oversikt. Tidligere forsøkt på dette har bare ført til frustrasjon da bilder i feeden hos for eksempel en som bruker Outlook som leser er vanskelig å ta høyde for. Stikkordet med løsningen jeg har valgt må være «godt nok». Det krever en viss vedlikehold, men ikke verre enn at jeg går inn i loggen en gang iblant og luker ut de verste.

Som oftest er det ikke de bloggene som har to besøkende om dagen som er problemet, men forum og andre sider med høy aktivitet. I mitt tilfelle har jeg nok av båndbredde foreløpig, så da kan jeg godt servere et annet bilde istedet. Men jeg har sørget for at bildet er komprimert så mye som mulig likevel. Dersom du har tenkt å bruke tekst kan det være verdt å sjekke forskjellen i størrelse mellom flere formater (gif/jpg først og fremst).

Et siste tips. Når du tester om dette virker, typisk ved å se om bildet vises eller ikke på den siden som har hotlinket, vil gjerne nettleseren bruke det bildet du allerede har i cahe. De fleste nettlesere kan tvinges til å hente på ny ved å trykke ctrl-F5 eller tilsvarende.

Oppdatering: Jeg har gjort dette mye smidigere ved hjelp av litt enkel koding.

Er passordene dine sikre?

I løpet av en vanlig dag benytter jeg mange passord og pinkoder for å verifisere meg mot ulike systemer. Jeg husker de aller fleste passord, men har funnet noen ulike metoder for å håndtere den uoversiktlige mengden av påloggingsinfo som er nødvendig gjennom både jobb og privat. For passord på jobb har jeg et passordbeskyttet regneark for de mindre kritiske passordene. Dette er delt med et par andre utviklere. Det største problemet er faktisk å huske passordet til regnearket, da dette ikke brukes i noen annen sammenheng.

Privat bruker jeg, dessverre, ofte det samme passordet. Jeg har rundt regnet 10 ulike passord jeg benytter privat, de fleste følger det samme mønsteret – alle er kryptiske. Etter at noen misbrukte PayPal kontoen min har jeg endret passord for alle nettsider som kan tappe kredittkortet mitt for penger. Passordene er genererte strenger bestående av masse bokstaver, tall og tegn, som jeg ikke kjenner til. De ligger lagret i et eget program som krever enda et passord for å logge seg inn i. Trenger jeg tilgang til en av disse nettsidene må jeg gå gjennom dette programmet, eller få tilsendt et nytt passord. De aller fleste private passord ligger i dette programmet. Mister jeg nøkkelen inn i programmet, må jeg resette de fleste passord.

Jeg er opptatt av sikkerhet, men også opptatt av brukervennlighet. Ofte blir det et kompromiss for at vil ta i bruk en løsning. For noen systemer og nettsider er ikke sikkerheten like kritisk, og jeg velger å ta i bruk et standard passord. For andre steder velger jeg et autogenerert passord eller en variant av tidligere passord.

Når jeg da velger å ta i bruk smarte løsninger for å ta vare på sikkerheten blir jeg veldig skuffet når store og små leverandører ikke ser ut til å ta sikkerhet på alvor. Min sikkerhet. Et eksempel på dette er strømleverandøren min, Vitel (Tidligere strømleverandør. De har som kjent sluttet med strøm nå.). Som de fleste andre leverandører tilbyr de en mulighet for å få tilsendt innloggingsinformasjon dersom brukeren har glemt dette. Og som så mange andre gjør de den samme feilen og sender en epost med brukernavn og passord jeg registrerte meg med. Som om det ikke er nok finner jeg den samme informasjonen på hver eneste faktura.

Nå er det ikke slik at man kan gjøre spesielt stor skade ved å logge seg inn hos en strømleverandør, men passordet er nok for mange det samme som brukes mange andre steder. Sammen med epostadressen kan dette misbrukes i stor skala.

Så hvordan bør dette løses? Mange har skjønt det, og oppbevarer ikke passord i klartekst. Ei heller kan de hente ut passord når brukeren har glemt det. Man kan kun sjekke inntastet passord mot det som er registrert, ved å gjøre den samme kryptering på inntastet passord som ble gjort når passordet ble lagret første gang. Dersom brukeren har glemt passordet må nytt passord settes, enten ved at et passord genereres automatisk eller at brukeren setter nytt via en link som kan brukes en gang. Uansett bør brukeren kunne velge seg et nytt passord et sted i prosessen. De aller fleste gjør det på denne måten, men veldig mange slurver.

Jeg har for lengst send en epost med min mening til min strømleverandør og flere andre. Gjør det du også, så kanskje de endrer sin praksis!

Dette er eposten jeg sendte dem:

Jeg har en forespørsel angående deres praksis med å lagre og sende passord i klartekst over epost. I tillegg er også mitt passord skrevet i klartekst på alle fakturaer tilsendt meg. Hvorfor har dere behov for å lagre mitt personlige passord i klartekst? Jeg stiller meg skeptisk til at dere har tilgang på mitt personlige passord og er bekymret over muligheten for at noen av deres ansatte eller andre tredjeparter kan få tilgang på passordet med å lytte på nettverket, lese mine faktura eller andre metoder. Når dere sender mitt passord på epost, blir det overført over nettverket i klar-tekst og er lett leselig på ulike nettverks-rutere og lokasjoner. Det burde ikke være noen tekniske eller funksjonelle behov som gjør at dere må lagre mitt personlig passord i klartekst eller med en reversibel kryptering. Det bør være nok med en ikke-reversibel hash av passordet. Håper dere tar forespørselen til etterretning og forstår min bekymring for mitt privatvern.

Oppdatering! Jeg har fått svar på min henvendelse til Vitel:

Hei Vi har hatt oppe denne saken før med post og teletilsynet og vi har gjort endel endringer i vårt system som post og teltilsynet har funnet tilfredstillende godt nok. Jeg lister opp en del punkter under som viser hva som er gjort. – Ved å gå inn på «Mine sider» kan man velg bort at passord vises på faktura – Ingen ansatte i Vitel har tilgang til å se ditt passord – du kan selv velge passord på «Mine sider» Når det gjelder at passord blir sendt over nettverk via epost eller sms så er dette helt vanlig praksis og informasjonen som evt. kan leses kan skjelden være av interesse for en tredjepart. Vi har gått gjennom våre rutiner sammen med pt og dette skal være sikret tilstrekkelig godt nok. Håper dette var et beroligende svar. Med vennlig hilsen Kundesenter

De opererer med andre ord etter «godt nok»-taktikken. Jeg er ikke spesielt beroliget av en slik taktikk. Selvfølgelig har ansatte hos Vitel adgang til passord om de ønsker det, de sitter jo på dataene. Hvem som helst med tilstrekkelig adgang til riktige databaser kan hente ut denne informasjon. Utro tjenere finnes det mange av, og den beste måten å sikre seg mot disse er å ikke legge frem muligheter som dette. Nå er ikke jeg kunde hos Vitel lenger, da de ikke klarer levere strøm til meg uansett, men jeg endret fort passordet mitt når jeg fant ut av praksisen deres. Da er det greit med et kryptisk passord som jeg ikke kan selv engang. Eksempel på et slikt passord er (tilfeldig generert for meg nå): «cHQ^smX9G#sW».

Jeg jobber i et miljø hvor sikkerhet er utrolig viktig. Dårlige løsninger kan eksponere personsensitive og medisinske data. Skikkelig dårlige løsninger kan gi ledere en grunn til å pakke sammen på dagen, og utvikler følger nok med skulle det skje. Ofte må derfor det vurderes hvor godt disse dataene skal beskyttes. Vi kan velge å gjøre dette «godt nok» for å tilfredsstille lover og regler, eller vi kan sørge for å gjøre det så bra at vi sover godt om natten. Vi velger alltid sistnevnte, fordi det ikke koster så mye mer og fordi vi har et rykte å tenke på. Det finnes (dessverre) mange eksempler på brukernavn og passord på avveie, fordi løsningen har vært «god nok». Hva med å bare gjøre det bra med en gang? Så er også risikoen for feil fantastisk mye mindre!

Drømmemobilen

Utviklingen av nye mobiler går rasende fort. Det har den i grunn gjort ganske lenge nå virker det som. Min første mobil fikk jeg når jeg var 17 år gammel, ikke for tidlig, men heller ikke for sent den gang. Det var langt fra de fleste av vennene mine som hadde mobil den gangen heller. Min første mobil var en Motorola jeg kunne brukt som slagvåpen hadde det ikke vært for at den var bortimot hul. Den endte sitt liv i et herlig knas mot fortauskanten i Bardufoss sommeren 2000.

Siden har jeg hatt en del mobiltelefoner, stadig jakten på drømmemobilen. Jeg har enda ikke funnet den, men har vært nære noen ganger. Jeg har vært innom Motorola, Samsung, Nokia, Sony (importert fra Sverige), Sony Ericsson, QTek (senere HTC) og HTC. Litt av problemet er nettopp den raske utviklingen som hele tiden sørger for at mobiler blir foreldet i et voldsomt tempo. Min nåværende mobil, en HTC DIamond er nok den desidert beste telefonen jeg har hatt, men er ikke uten mangler og problemer den heller. Og den er i manges øyne allerede «gammel». Men den fungerer finfint, og passer meg utmerket. Men man har likevel alltid lyst på noe nytt, ikke sant?

Jeg holder meg sånn passe oppdatert på mobiler om dagen. Det betyr at jeg leser noen artikler iblant, og jeg er alltid nysgjerrig når en bekjente eller kollegaer kommer med noe nytt. Men så er jeg også langt over snittet interessert i teknologi og dingser. Og mobiler har på et tidspunkt blitt mer dings enn noe annet. Ihvertfall de jeg ser på. En mobil skal ikke lenger bare brukes til å ringe med, og sende noen meldinger iblant. Nei, med den skal du kunne sjekke epost, surfe på nettet og ta bilder og video i god kvalitet. Sistnevnte er forøvrig det siste jeg ser på, da jeg uansett synes kompaktkamera er begrensende nok. Men det finnes mobiler som kan ta bilder i ganske grei kvalitet, selv om det selvsagt ikke kan måle seg med hverken speilrefleks eller et godt kompaktkamera. Videre skal mobilen støtte alt av teknologi innen datatrafikk, ha mulighet for å koble seg til trådløse nett og GPS. Alt sammen i en pakke som skal være kompakt nok, men med stor skjerm, og batterilevetid nok til at du kan ta den med på telttur. Kompromisser må inngås.

Men hvorfor kan jeg ikke «sette sammen» min egen mobil? Det hadde vært noe. Jeg vil kunne velge en grunnmodell, og dermed legge til og fjerne komponenter og programvare som jeg selv ønsker. Jeg ønsker for eksempel ikke å betale for et middels kamera, så det tar jeg bort. Ei heller ønsker jeg å betale for en masse elendige spill. Bort med dem. Men jeg vil ha GPS, WLAN, 3G/EDGE og en del nyttige programmer. Videre vil jeg kunne velge skjerm, minne, lagringskapasitet og prosessor til å passe mine krav til ytelse. Omtrent som jeg forventer om jeg bestiller en ny pc. Men dette kan jeg ikke. Jeg kan ikke velge bort noe, og jeg kan ikke legge til.

Internet Explorer 8 – Compatibility View?

Det var omtrent her min første skepsis satte inn. ie8 Som så mange andre er «avhengig» av Internet Explorer på jobb. Noen sider fungerer rett og slett ikke i noe annet. Ja, jeg vet jeg kan ha IETab addon i Firefox, men velger heller å ha et fullstendig skille. Noen nettsider har til og med en sjekk på hvilken nettleser man bruker, fremfor å faktisk gå inn for å fungere i flere. Det er feigt det!

Men hva er egentlig dette Compatibility View? Jeg skrur det av jeg, så får vi se hvordan det går.

Tving JDeveloper til å bruke riktig språk

Ok, dette er nok de spesielt interesserte. Jeg kan tippe cirka 0% av mine lesere har nytte av dette, men ettersom jeg ikke har en egen supergeekblogg legger jeg det her likevel.

JDeveloper har dessverre ingen innstilling for å endre språk. Istedet forsøker den å oversette til det språk som er satt under «Instillinger for region og språk». På min maskin blir det norsk. Men alt i JDeveloper er ikke oversatt, og man ender opp med en suppe av norsk og engelsk i herlig forening. Prøv å søke på Google etter norske feilmeldinger, så forstår du problematikken.

Dette kan heldigvis fikses. Det viser seg nemlig at innstillingene satt i «JDEV_HOME/jdev/bin/jdev.conf» blir lystret, uavhengig av språk på maskinen. Da er det bare å legge til de to følgende linjer for å få skikkelig engelsk (US) over hele fjøla: AddVMOption -Duser.language=en AddVMOption -Duser.country=US

HTC Touch Diamond

Jeg har nå vært den lykkelige eier av en HTC Touch Diamond en måneds tid. En telefon jeg har siklet på lenge før den var å finne i butikkene. Jeg har ikke angret enda.

Ikke for alle HTC Touch Diamond er ikke en telefon for alle. Det er tross alt en liten pc dette her. En veldig liten pc man kan ringe med. Jeg har tidligere testet et par Qtek telefoner med varierende hell. Det har gjerne vært ustabilitet som har vært problemet, så jeg har holdt meg unna de en stund. Men nå falt jeg nok en gang for en Pocket PC.

Og trenger du egentlig støtte for Exchange, GPS, WLAN, 3G, EDGE osv osv…? Mest sannsynlig ikke. Ikke jeg heller, men jeg er geek og er dermed untatt.

Diamond vs IPhone For mange er det naturlig å sammenligne telefonen med en IPhone. For meg har aldri IPhone vært et reelt alternativ, først og fremst på grunn av den håpløse bindingen til et mobilselskap jeg helst ikke vil knytte meg til. Inntil det åpnes for andre aktører er den derfor fullstendig uaktuell. Etter å ha kost meg med Diamond siste måneden tror jeg faktisk ikke jeg ville byttet om jeg kunne heller.

Treg? Som nevnt er Diamond en liten lommepc på godt norsk. Den kjører Windows Mobile 6.1, på godt og vondt. Ettersom jeg uansett jobber i et Windows miljø (selv om jeg bruker mye open source og programmerer Java) passer det meg egentlig helt greit. I praksis er det bare synk mot Exchange som er viktig i den sammenheng, og det fungerer utmerket. At jeg kan installere programmer og leke meg mot mobilen uten ekstra programvare er også veldig greit.

Ettersom dette er en pocket pc kan den til tider virke veldig treg sammenlignet med «vanlige» mobiltelefoner. Ettersom den kjører en form for Windows kan den også henge og krasje. Jeg har ikke vært plaget av dette. I løpet av en måned har jeg startet den på nytt tre ganger. Alle gangene etter at jeg har tuklet mye med tredjepartsprogrammer. Sammenlignet med tidligere telefoner fra Nokia, Sony Ericsson og Samsung har den faktisk vært mer stabil enn disse. Unntak er selvsagt gode gamle Nokia 5110, den «beste» mobiltelefon jeg noensinne har hatt. 5110 henger dog litt etter rent teknoligisk i disse dager…

Media Mobilen fungerer bra som musikkspiller, selv om jeg fint kan tenke meg at Iphone er overlegen på dette området. Medfølgende plugger er helt greie, men kunne vært bedre. Jeg bruker uansett en mp3 spiller fra Sony til musikk ((Som for tiden er fullstendig død, og står i fare for å bli erstattet. Skal en tur gjennom garantimølla først.)). Kamera på mobilen er også helt greit, men har ikke blitz og kan være litt tregt. Begge disse tingene visste jeg før jeg kjøpte den, så dette var ingen overraskelse.

Diamond har en skarp og flott skjerm. Mange har klaget over at skjerm, og telefonen ellers, lett blir ripete og stygg. Min ser nesten ut som om den nettopp ble tatt ut av esken ((Nevnte jeg at esken den kom i er utrolig stilig?)). Jeg har behandlet akkurat som alle andre telefoner jeg har hatt, uten å pakke den inn i etiu eller denslags. Den ligger stort sett i lomma mi, sammen med annet lommerusk. Nøkler kan være greit å ha i adksilt lomme, men dette gjelder de aller fleste telefoner/mp3 spillere/pda/gadget/blanke ting. Å surfe på nettet eller lese mail går som en lek. Ettersom telefonen ikke er større enn den er er det selvsagt begrenset med plass i skjermen, men det er et kompromiss jeg er mer enn villig til å inngå for å slippe å drasse på en større telefon. Jeg har tidligere lånt en Nokia Communicator noen uker. Never again.

Oppgradere Å oppgradere rom på telefonen er enkelt, men betyr også at man kan miste alt man har på telefonen. Det finnes flere programmer for å håndtere backup/restore for dette, men for meg ligger nesten alt jeg bryr meg i Exchange. Jeg bruker også Dashwire.com for å ta backup av telefonen iblant. Dermed trenger jeg bare huske på å flytte over eventuelle bilder tatt med kamera og andre filer før jeg setter igang en oppgradering. Programmer må også installeres på ny etter en oppgradering. Har man mange ekstra programmer finnes det egne programmer for å håndtere reinstallasjon av disse med få tastetrykk eller trykk på skjermen. Jeg har ikke prøvd dette selv, men det fungerer visstnok veldig bra.

Programmer Det finnes flust av programmer man kan legge inn på mobilen. Mange gratis, og mange man kan betale for. Jeg har ikke tatt helt av når det gjelder programmer, men installert et lite knippe for blant annet å:

  • Bedre kontrollere når jeg bruker 3G/EDGE
  • TomTom for å navigere ved hjelp av den innebygde GPS’en
  • Media spiller for å håndtere de fleste formater
  • Lightsaber fordi det er så utrolig kult å svinge telefonen frem og tilbake mens den lager lyder fra Star Wars’ lyssverd (eller hva det nå heter på norsk) ((Den trofaste leser vil muligens her lure på hva jeg, som ikke liker en eneste Star Wars film, skal med et slikt program. Det vet jeg ikke helt, men det er moro.))
  • Dashwire klient for å synkronisere mobilen mot Dashwire.com
  • Program for å logge GPS koordinater for å bruke med bilder jeg tar på tur (ikke veldig mye brukt riktignok, men jeg kan)
  • Og et lite program for å bruke mobilen som vater. Kjempenyttig. (utfordringen her er da at HTC Diamond ikke er plan på baksiden…)
THC Diamond

Flock

Jeg lovte visst på et eller annet tidspunkt å skrive en kort post om nettleseren Flock. Jeg har brukt den en god stund, og har stort sett vært ganske så fornøyd. Flock skiller seg fra andre nettlesere ved å konsentrere seg om det sosiale på nettet. Og her gjør den en veldig god jobb også. Men jeg bruker den ikke lenger.

Flock har som nevnt et fokus på det sosiale. Det betyr at den kan gi beskjed om statusoppdateringer fra en rekke tjenester, som Facebook, Twitter, Pownce og så videre. Jeg har allerede twitterfox installert i Firefox, så denne gir meg det jeg trenger av oppdateringer fra Twitter, og vel så det. Oppdateringer fra Facebook er jeg lite opptatt av, da jeg ikke bryr meg om meldinger av typen «er på jobb» eller «skal ta meg en dusj». Dette er med andre ord ikke grunn nok til at jeg skal bytte fra Firefox. Apropos Firefox… Det kan være greit å nevne først som sist at Flock er bygget på denne fantastiske nettleseren. De aller fleste add-ons til Firefox vil derfor også virke i Flock. Nesten alle jeg bruker har fungert nøyaktig som forventet. Og nettleseren ellers oppleves ganske lik.

Men Flock har mye mer å by på. I tillegg til å følge med på oppdateringer fra alle vennene dine fra flere tjenester, kan du skrive blogg, dele bilder, tekst og video, eller følge med på feeds fra alle mulige steder. Alt fra nettleseren. Dette høres jo veldig fint ut, men i praksis kan det bli litt masete. Ihvertfall for en som bruker nettleseren mye på jobb. Jeg trenger ikke å bli forstyrret av ikoner som begyne å lyse fordi noen har lagt ut nye bilder på Facebook ellr Flickr. Jeg følger med på dette litt mer manuelt, i alle fall på Flickr.

Derfor har vendt tilbake til Firefox. Det aller meste jeg ønsket å gjøre i Flock kan jeg også gjøre i Firefox med riktig add-on. Jeg har add-ons som lar meg se oppdateringer fra Twitter, Google Reader og Gmail, og klarer meg egentlig fint med det. Ã… kunne se de siste bilder lagt ut av eller fra venner på Facebook kan være morsomt, men har liten nytteverdi for meg. Jeg liker ikke å bruke eksterne verktøy for å blogge, da jeg synes WordPress fungerer helt fint på egen hånd. Kort og godt trenger jeg ikke Flock. Det er en flott nettleser, men jeg trenger den ikke. Ettersom den er bygget på Firefox ligger den også etter rent teknisk. Flock 2 beta er bygget på Firefox 3, og er ikke fri for feil.

Flock passer nok mange. For meg ser jeg at jeg liker Firefox med selvvagte add-ons bedre. Men jeg vil absolutt anbefale andre å ta en titt på Flock.