Avatar billede smackers Nybegynder
26. november 2002 - 00:52 Der er 7 kommentarer og
2 løsninger

JS sikkerhed

Jeg har fået en opgave der lyder:
Ved hjælp af JaveScript skal du lave en sikker løsning, der dog består i at lade en javascript-fil overføre til clienten for at checke login/pass.
Brug <script language="JavaScript" src="loginscript.js"> i <head>'eren.

Klienten ville da kunne finde loginscript.js på sin maskine ik..!?

I så fald, nogen der kender en løsning..
Avatar billede fiskesuppe Nybegynder
26. november 2002 - 01:27 #1
Jeg er ikke helt med på hvad du mener...

Altså det er jo meget normalt at checke det brugeren har indtastet vha. JavaScript. Hvis det er meningen at en bruger skal indtaste et telefonnummer kan det jo så være relevant at lave et JavaScript der melder fejl hvis man ikke har indtastet 8 tegn eller hvis man har indtastet andet end tal.

Der er ikke rigtig nogen sikkerhedsproblemer forbundet ved at gøre dette. Det som brugeren har indtastet bliver jo ikke gemt i loginscript.js, men bliver blot lagt i computerens hukommelse ind til browseren lukkes.

Ellers vil du også kunne lave det samme med et serverbaseret programmeringssprog som f.eks. ASP eller PHP, men i så fald skal du have puttet spørgsmålet over i en anden kategori.
Avatar billede emileej Nybegynder
26. november 2002 - 11:49 #2
Mener du at du vil lave en nøglefil-funktion. Hvor klienten har en js fil liggende på sin pc, som hjemmesiden så checker som sikkerhed?
I så fald skal du skrive noget ala:
<script src="file://C:\Programmer\minsikkerhedsside\secure.js"></script>

E-)mil
http://eej.dk
http://hjemmesideservice.dk
Avatar billede smackers Nybegynder
26. november 2002 - 13:50 #3
-> fiskesuppe
Til generel form-check er det normalt at bruge JS, men til et brugernavn/password-validering kunne jeg forestille mig at det vel af sikkerhedsmæssige hensyn er mest hensigtsmæssigt at bruge server-side check!?
I denne opgave, SKAL jeg dog bruge et JS til at checke user/pass. Som du skriver vil scriptet ligge i RAM, og mit spørgsmål er derfor: er der nogen risiko for at en ondsindet bruger (hvis han(/hun) er hardcore nok) kan læse dele af sin ram, og derved læse det korrekte user/pass??

-> emileej
Hej Emil, det er Rasmus fra Chili - kan du huske mig :)Som du kan læse af ovenstående er det ikke en nøglefil-funktion jeg leder efter, og jeg kan i opgavens natur ikke benytte mig af nogen server-side komponenter - selvom det var den løsning jeg selv ville bruge..

Jeg har fundet et eksempel for at illustrere:
http://www.dgu-golf.dk/password/login.htm
Kilden viser at filen login.js bruges til at checke user/pass, før man føres videre til de lukkede sider..

mvh smackers
Avatar billede emileej Nybegynder
26. november 2002 - 14:26 #4
>>Rasmus
Hejdav :)
Man behøver ikke at læse sin ram for at kunne læse indholdet af en .js fil. Det er ikke - repeat: _ikke_ muligt at sende data til browseren og herefter få denne til at skjule det for brugeren. Du må beslutte om du vil sende det eller om du vil sende det -ikke.
Hvis det er fordi du vil undgå at reloade din side, kan du jo nøjes med at lave det ved at sætte din form til at submitte til en lille 0 pixel stor frame, der så ourputter et javascript som svar.
Det er dine muligheder med hjemmesider hvis du ikke vil bruge en konvensionel login.

E-)mil
http://eej.dk
http://hjemmesideservice.dk
Avatar billede fiskesuppe Nybegynder
26. november 2002 - 15:46 #5
Det er ikke muligt at validere et password vha. JavaScript, for så vil det kræve at du skriver noget i retning af:

function Login() {
  var login=document.form1.username.value;
  login=login.toLowerCase();
  var password=document.form1.password.value;
  password=pw.toLowerCase();

  if ((password == "ditPassword")&&(login == "admin")) {
    window.location="login.asp"
  }

  else
    alert("Du har indtastet forkert brugernavn eller password");
}

Så vil enhver bruger jo kunne se i koden hvad passwordet er og det vil du INTET kunne gøre noget ved. Siden skal jo hentes ned på din harddisk før den kan åbnes. Sikkerheden på den side du henviser til er forresten hamrende ringe, det tog mig ca. 2 minutter at finde ud af hvad brugernavn og password var, så jeg kunne logge ind (hacking...? ej, jeg vil ikke kalde det hacking, men nærmere ufatteligt dårlig sikkerhed).

- Lav hellere noget serverside programmering til at validere passwordet. Det nytter heller ikke noget at lave loginscriptet i f.eks. Java, for det vil man blot kunne decompile og så slippe ind på siden igen.
Avatar billede Slettet bruger
26. november 2002 - 16:14 #6
jakoba har lavet et rigtig godt script, der normalt ville ligge her:
http://www.jakoba.dk/eksperten/loginscript/exp206742.html
Desværre ser han ud til at have nogle hist-problemer! :(
Avatar billede smackers Nybegynder
26. november 2002 - 16:32 #7
Hej Emileej og Fiskesuppe,

Det anede mig, at man med JS ikke kan lave en sikker løsning. Jeg tror såmænd også det er præcist hvad vores lærer prøver at fremprovokere. Jeg vil derfor lave en JS løsning, men stærkt påpege at der ingen sikkerhed er, hvis en behændig bruger kommer forbi.

-> Fiskesuppe
Webmaster for det omtalte website er en af mine bekendte, og det ville være sjovt at kunne vise ham hvordan hans site kan gennemskues. Hvis du vil hjælpe mig med at hjælpe ham, ville jeg være meget taknemmelig (omend jeg allerede har delt point ud). Selvom der ikke er tale om decideret hacking og ulovligheder, forstår jeg hvis du ikke vil poste metoden hér på eksperten, til skue for alle og enhver. I stedet kan du beskrive fremgangsmetoden i en email til mig, på smackerooni@hotmail.com - medmindre du finder det upassende.
Tak for hjælpen under alle omstændigheder!

-> Emileej
Flot site du har dér - det bliver bedre og bedre ;)

MVH Smackers
Avatar billede Slettet bruger
26. november 2002 - 16:38 #8
Du kan finde masser af inspiration her:
http://javascript.internet.com/passwords/
http://www.webreview.com/2001/01_26/developers/index02.shtml
http://developer.irt.org/script/password.htm

Og selvom ingen af dem er 100% sikre, er nogle af dem dog ekstremt svære at have med at gøre.

Dette script er min favorit og lige så sikkert som et server-side script:
http://tech.irt.org/articles/js075/index.htm
Avatar billede fiskesuppe Nybegynder
26. november 2002 - 23:18 #9
smackers -> Kan du ikke bede ham din ven om at sende mig en mail: so_ni30@hotmail.com så kan jeg forklare ham problemet med hans sikkerhed :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester