Password-beskyttelse af visse websider

Det kan være interessant kun at give en del af brugerskaren adgang til til visse websider på et websted. Der er en mængde metoder til at klare denne sag. De fleste af dem baserer sig på ASP- eller PHP-programmering, eller direkte kontrol med webserveren.

Her præsenterer jeg imidlertid et JavaScript, der kan klare denne sag, uden indviklede serverside scripts.

Jeg starter med at vise eksempler på de tre websider, der som minimum indgår i et sådant system, nemlig

  1. En webside, som giver en bruger muligheden for at logge ind eller returnere til siten:
    Log ind side
  2. “Den hemmelige side”, som kun de brugere ser, som er i besiddelse af korrekt bruger-ID og password
  3. samt den side, der vises i til brugere, der logger ind med forkert bruger-ID og password.

De to sidstnævnte sider ser du eksemplerne på, hvis du følger anvisninger på log ind-siden.

Systemet beror på et JavaScript, der indlæses på log ind-siden.

Ad 1: log ind-siden

Dette er en ganske almindelig HTML-side med de meddelelser, der nu en gang skal til for at orientere brugeren om, hvad der sker og skal ske. Det, der forventeligt skal ske, er at brugeren har adgang, og derfor klikker på den form button med teksten “Login!”, som findes på siden.

På denne side er der i head-delen indlæst et JavaScript, der definerer funktionen LogIn(). Det er netop denne funktion, der kaldes ved et klik på knappen.

Ad 2: LogIn()-funktionen

Denne funktion er gengivet i tekstboksen herunder:

function LogIn(){
  loggedin=false;
  username="";
  password="";
  username=prompt("Bruger ID:","");
  username=username.toLowerCase();
  password=prompt("Kodeord:","");
  password=password.toLowerCase();
  if (username=="guest" && password=="guest") { 
    loggedin=true;
    window.location="pages/index.html";
  }
  if (username=="hanne" && password=="larsen") {
    loggedin=true;
    window.location="files/index.html";
  }
  if (username=="thilde" && password=="jensen") {
    loggedin=true;
    window.location="files/index.html";
  }
  if (username=="jørgen" && password=="jensen") {
    loggedin=true;
    window.location="files/index.html";
  }
  if (username=="ken" && password=="larsen") {
    loggedin=true;
    window.location="files/index.html";
  }
  if (username=="jfj" && password=="jfj") {
    loggedin=true;
    window.location="files/index.html";
  }
    if (loggedin==false) {
    window.location="res/sorry.htm";
  }
}

What happens here?

I scriptet starter jeg med at sætte 3 variable, nemlig loggedin, username og password. Dernæst sættes værdien af den variable username til en JavaScript dialogboks, der hedder prompt, der, som det ses, kan forsynes med en instruks samt en værdi, der svarer til, hvad brugeren indtaster i dialogboksen.

I næste linie ændres alt indtastet til små bogstaver.

Den samme proces gennemføres for den variable password. Nu har brugeren forsynet os med værdier svarende til de to variable. Alle de følgende linier er gentagne sammenligninger af disse værdier med nogle værdier, jeg i forvejen har indtastet.

Alle disse i forvejen indtastede værdier svarer naturligvis til de personer, jeg synes skal have adgang til den “hemmelige” side. Det er den samme side for alle personernes vedkommende, og det er den, de stilles om til, hvis username og password evaluerer til at være identisk med et sæt af de i forvejen indtastede værdier.

Der er variationsmuligheder her: Du kan oplyse et “gruppe”-bruger-ID og -password, således at f.eks. alle bryllupsgæsterne kan se billederne med bruger-ID “wedding” og password “guest”, for nu at nævne et eksempel, jeg selv har brugt.

Eller forskellige grupper kan stilles om til forskellige “hemmelige” sider.

Hvor sikkert?

Jeg understreger, at man ikke skal kende vildt meget til edb, www og browsere for at bryde igennem denne password-beskyttelse. Den er kun tilstrækkelig til at holde de mest tilfældige brugere ude.

Og det kun, hvis du husker at skjule de hemmelige sider for søgerobotter og almindeligt nysgerrige:

  1. Læg logind-sider og “hemmelige” sider i en folder med et usædvanligt navn, f.eks /pqxyz/.
  2. Indsæt <meta name="robots" content="none"> på alle sider i denne folder.
  3. Undgå på nogle af de offentligt tilgængelige sider at have referencer til disse sider.
  4. Formener søgerobotterne adgang til denne mappe ved hjælp af en robots.txt fil.
    En robots.txt fil skal ligge i roden til dit websted og have følgende udseende:
    User-agent: *
    Disallow: /pqxyz/
    Disallow: osv for andre foldere, der skal skjules for søgerobotter.
    
  5. Skal du ha' en ordentlig kodeordsbeskyttelse, som sætter en rigtig hacker på arbejde, skal du under alle omstændigheder ind på noget med serverside scripts i PHP eller ASP.

    Ad 3: Ikke-adgangsberettigede

    Svarende til den knap, jeg har på logind-siden, der fører tilbage til denne artikel, bør du have en knap, der fører den tilfældige bruger tilbage til den foregående side eller til forsiden af din website.

    Og endelig skal du have en tredie webside, hvor du oplyser om, at en bruger har forsøgt at logge ind med et forkert brugernavn og/eller password. Det er den side, der henvises til i de sidste linie i koden herover, hvor der står
    if (loggedin==false) {
    window.location="res/sorry.htm";
    .

    Med alle forbeholdene er det et meget nemt lille system til at lave adgangskontrol på nogle sider, som du ikke synes, alle og enhver umiddelbart skal kunne læse.

    Denne side er senest opdateret: 3. November, 2008