Password med JavaScript

Hop længere ned på siden, til:

Siden er opdateret 7. 2. 2009

Denne måde at kontrollere adgangsrettigheder tager udgangspunkt i et lille simpelt JavaScript. Dette script tester tilstedeværelsen af en mappe og et deri liggende dokument. Når man blot sørger for, at denne mappe og dokument har nogle kryptiske navne, som ikke kan gættes af den første den bedste hacker, er metoden lige så sikker som den er simpel.

Scriptet, som foretager denne test, ser således ud:

<form name="bruger" action="#" onsubmit="location.href = this.kodeord1.value + '/' + this.kodeord2.value + '.htm'; return false">

<p><input type="text" size="15" name="kodeord1">&nbsp;Brugernavn</p>

<p><input type="password" size="15" name="kodeord2">&nbsp;Adgangskode</p>

<p><input type="submit" value="Luk mig ind" onclick="location.href = this.form.kodeord1.value + '/' + this.form.kodeord2.value + '.htm'; return false"></p>

</form>

Anbring koden det sted på indgangssiden, hvor du vil have indtastningsfelterne for brugernavn og adgangskode.

Ideen er så, at brugerne skal indtaste førnævnte mappenavn i feltet Brugernavn og dokumentnavnet i feltet Adgangskode.

Hvis du har flere brugere, som skal have adgang til forskellige sæt fortrolige oplysninger, kan du uden problemer fordele disse oplysniger i forskellige mapper med hver sit kryptiske navn og indeholdende hver sit kryptisk navngivne dokument.

Tilbage er så blot at etablere den mappe, som skal være genstand for testen og derefter lægge dokumentet deri. Lad dokumentet med det kryptiske navn være den side, som brugeren skal have adgang til.

 Brugernavn

 Adgangskode

Her til venstre ser du formularen med indtastningsfelterne.

Som brugernavn skal du skrive aqz42
Som adagngskode skal du skrive aqx43

Det giver adgang til dokumentet aqx43.htm i undermappen aqz42

Scriptet er lagt i det dokument, der på illustrationen er kaldt kontrol.htm. Der tjekkes så i feltet Brugernavn for eksistensen af mappen aqz42. Du kan selvfølgelig kalde din mappe noget helt andet - navnet må bare ikke være åbenlyst for uvedkomende.

I feltet Adgangskode tjekkes for eksistensen af dokumentet aqx43.htm. Også her kan du frig vælge et andet navn - og også her må navnet ikke være åbenlyst for uvedkommende.

Både hvad angår mappenavn og filnavn gælder, at jo flere bogstaver og/eller tal i navnet, jo sværere bliver koden at knække for hackere.

Filen index.htm i mappen aqz42 tjener som en lille sikkerhedsventil for det usandsynlige tilfælde, at nogen uvedkommende får 'næsen' ind i mappen. Med en fil af det navn i mappen kan hackerne ikke komme til at se, hvad der ligger af andre filer eller mapper. index.htm indeholder så en viderestilling til en side højere oppe i systemet - uden delay. Se siden om adresseændring.

^ Tilbage til sidens top


Fordele og ulemper ved login med javascript

Lad os starte med ulemper, for dem er der desværre nogle stykker af:

Hvis en godkendt bruger efter login laver bogmærke ved det beskyttede materiale og der efterfølgende kommer en ikke-godkendt bruger på samme maskine, har denne uhindret adgang til materiale, som vedkommende ikke har lovlig adkomst til at se. Hermed er beskyttelsen væk.

Da de fleste browsere cacher de sider og adresser, der har været besøgt, er der - især på offentligt tilgængelige maskiner - en mulighed for, at ikke-godkendte brugere ad den vej får adgang til materiale, som vedkommende ikke har lovlig adkomst til at se. Hermed er beskyttelsen væk.

Da mange statistikker registrerer, hvor besøgende kommer fra, må der ikke laves links fra den beskyttede side og ud til andre sider eller sites. Ellers er beskyttelsen væk.

Uanset hvor kryptisk mappe- og filnavn måtte være, en side på nettet er offentlig tilgængelig i samme øjeblik en godkendt bruger begår den dødssynd at etablere et link til det beskyttede materiale på en offentligt tilgængelig side. Hermed er beskyttelsen væk.

Har man lavet login med javascript og er sikkerheden blevet kompromitteret af en sådan stupid personage, kan det dog reddes ved at omdøbe både mappe og filnavn, slette synderen af listen over godkendte personer og informere resten om det nye login.

Hvis folk har afvikling af javascript slået fra i deres browser, kan de ikke komme ind. Men sikkerheden tager her ikke skade.


Og fordele:

Et lille regnestykke: Med 4 karakterer og 25 mulige bogstaver + 10 mulige tal bliver der 35×35×35×35 = 1.500.625 (1½ million) forskellige kombinationer at afprøve, for at finde det rigtige mappenavn. For hver tilføjet karakter skal dette tal ganges med 35.

8 karakterer giver således 2.251.875.390.625 (2¼ billion) muligheder. Blot én karakter mere bringer tallet op på over 78 billioner (78815 milliarder) muligheder!

Dertil kan så adderes det antal kombinationsmuligheder, der kan opnås ved hver af de mindre størrelser (1 - 8 karakterer), da hackeren naturligvis ikke aner noget om, hvor mange karakterer, der er i den kode, han skal gætte:

78 billioner + 2¼ billioner + 64¼ milliarder + 1,8 milliard + 52½ million + 1½ million + 42875 + 1225 + 35 kombinationsmuligheder at afprøve, eller langt over 80 billioner.

Gang det tal, du har opnået i mappenavnet, med de kombinationsmuligheder, der ligger i filnavnet og du er oppe i et astronomisk antal muligheder, der skal gættes rigtigt for at komme ind.

Hverken almindelige søgemaskiner eller "offline browsere" kan finde de sikrede sider så længe der ikke er links til dem, så de er ikke nogen trussel.

^ Tilbage til sidens top


Skjul adressen

Som jeg skrev oppe under Fordele og ulemper, er der ikke meget fidus i at passwordbeskytte noget, hvis de godkendte brugere af egen drift laver links til det beskyttede materiale.

Det problem kan du som administrator / designer komme udenom, hvis du lægger det beskyttede materiale + login-siden i en iframe. Derved er du sikker på, at kun det ikke-beskydde materiales adresse kan ses i browserens adresselinje.

Jeg vil her med et par simple kasser anskueliggøre princippet:

Denne kasse illuderer en side, der indeholder en iframe

Denne sides adresse kan ses i browserens adresselinje.

Denne kasse illuderer en iframe, hvori fra start indlæses login-siden og derefter det beskyttede materiale.

Adressen på siderne, der er indlæst i denne iframe, kan ikke ses i browserens adresselinje.

Hvis du så efterfølgende sørger for, at der internt i det beskyttede område kun forekommer interne relative links, kan der ikke i sidernes kildekode aflæses nogen adresse, der kan bruges til at etablere eksterne links udefra til siderne i det beskyttede område.

Eneste link ud af det beskyttede område skal være det link, der aktiveres ved log off. Dette link skal enten bare kalde en side i en mappe et niveau oppe med stien../ eller med en absolut adresse til det offentlige område.

Du laver den nødvendige iframe sådan:

<iframe id="skjul" src="login.html" style="width:xxx%; height:yyy; border:1px solid #999"></iframe>

^ Tilbage til sidens top


Adgang uden login

Principielt kan man som indehaver af en sådan "hemmelig" side vælge at springe login-funktionen over. Man sørger - f.eks. via mail - for, at de godkendte brugere kender adressen til den "hemmelige" side.

Desuden er det selvfølgelig under alle omstændigheder nødvendigt, at der ikke på nettet eksisterer indgående links til den "hemmelige" side - så der den jo ikke længere spor hemmelig.

Der må ligeledes ikke på den "hemmelige" side eksistere nogen udgående links (til andre websteder) hvor det kan detekteres, hvor der linkes fra. Så er siden nemlig heller ikke hemmelig ret længe.

^ Tilbage til sidens top


Læs debatter om password:

http://groups.google.com/groups?threadm=b08eh6%24r6g%241%40sunsite.dk
http://www.usenet.dk/oss/dk.edb.internet.webdesign/diverse.html#Kodeord

Valid XHTML og CSS / Copyright © Hjemmesideskolen november 2001
Hjemmesideskolen
Du er her: Forsiden - scripts - Password med JavaScript
Brugere lige nu: 1
Home Mail