/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Login system
Fra : Flemming Jensen


Dato : 28-09-02 15:47

Hej igen

Jeg har et spørgsmål ang. mit login system. Jeg har en menu i venstre side,
som bliver inkluderet med #include file="menu.asp". I den er der en et
Brugernavn og password felt. Når brugeren har logget ind skal menuen se lidt
anderledes ud, men præcis hvordan gør jeg det?

Har tænkt på at lave en Session("Login") = True hvis brugernavnet og
passwordet findes i databasen, og hvis ikke så Session("Login") = False.
Hvis jeg gør det kan jeg på den include fil(menu.asp) lave en side hvis
Session("Login") = True og en anden hvis den er false, men når brugeren har
udfyldt brugernavn og password feltet, skal den postes til eller anden
siden, og det er det jeg ikke helt har tjeck på. Altså da der er en include
fil vil selve den side man er på jo tit være forskellig. Hvis man f.eks. er
på forsiden og logger på skal formen jo sendes til forside.asp, men hvis man
så er på f.eks. links.asp skal den jo ikke postes til forside.asp, men
links.asp. Det letteste ville selvfølgelig være hvis include filen, menu.asp
kunne postes til sig selv. Eller hvis der var en funktion der på en eller
anden måde bare opdaterede siden, efter at Session("Login") var blevet =
True. Da jeg bruger en frame til hele siden skal det altså være præcis den
side man er inde på, og ikke den side som står i links feltet i browseren,
da der jo altid vil stå f.eks. http://minside.dk/

Og forresten er det egentlig en god idé at bruge Session("Login") til at
tjekke om man er logget på? Hvis folk på en eller anden måde finder du af,
at variablen hedder Login kan de jo selv lave en side hvor de sætter
("Login")=True og så linker til min side, hvilket vil virke som hvis de var
logget ind hos mig. Er der en mere sikker måde eller er det min metode i
orden?

1000-tak for de svar jeg ved jeg altid får :)

__
Flemming Jensen

Håber I kan hjælpe



 
 
Lars Hoffmann (28-09-2002)
Kommentar
Fra : Lars Hoffmann


Dato : 28-09-02 16:40

Flemming Jensen escribió / skrev

> Hvis man f.eks. er på forsiden og logger
> på skal formen jo sendes til forside.asp, men hvis man så er på
> f.eks. links.asp skal den jo ikke postes til forside.asp, men
> links.asp.


Jeps, der skal et lille trick til

Hvis du inkludere menu.asp på alle dine sider, kan du gøre følgende i
menu.asp:

<% if session.login <> true %>

<form action="login.asp?hvorhenne=<%=server.URLEncode
(Request.ServerVariables("SCRIPT_NAME") & "?" & Request.ServerVariables
("QUERY_STRING"))%>" method="POST" id="LoginForm">

(Altsammen på en og samme linie)

Det vil sige at din login formular sender til filen login.asp, men med
en querystring variabel kaldet "hvorhenne", der angiver hvor brugeren
har sendt formen fra.

Det er enormt smart, fordi når du i login.asp så har tjekket brugernavn
og password kan du sende brugeren tilbage ved at bruge

response.redirect(request.querystring("hvorhenne"))


> Og forresten er det egentlig en god idé at bruge Session("Login")
> til at tjekke om man er logget på?

Ja, det er helt fint


> Hvis folk på en eller anden måde
> finder du af, at variablen hedder Login kan de jo selv lave en side
> hvor de sætter ("Login")=True og så linker til min side,

Nej, det kan de ikke, da session variabler ikke kan deles imellem
servere.

Med venlig hilsen
Lars Hoffmann

Flemming Jensen (29-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 29-09-02 04:51

Lars Hoffmann skrev:

> Jeps, der skal et lille trick til
>
> Hvis du inkludere menu.asp på alle dine sider, kan du gøre følgende i
> menu.asp:
>
> <% if session.login <> true %>
>
> <form action="login.asp?hvorhenne=<%=server.URLEncode
> (Request.ServerVariables("SCRIPT_NAME") & "?" & Request.ServerVariables
> ("QUERY_STRING"))%>" method="POST" id="LoginForm">

> Det er enormt smart, fordi når du i login.asp så har tjekket brugernavn
> og password kan du sende brugeren tilbage ved at bruge
>
> response.redirect(request.querystring("hvorhenne"))

1000-tak for det. Det var rigtigt smart. Det var også sådan noget ligende
jeg selv tænkte på. Mit login system skulle altså være bullet prove nu? Ret
sikkerhedsmæssig, altså?

__
Flemming Jensen




Jakob Andersen (29-09-2002)
Kommentar
Fra : Jakob Andersen


Dato : 29-09-02 10:03

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> 1000-tak for det. Det var rigtigt smart. Det var også sådan noget ligende
> jeg selv tænkte på. Mit login system skulle altså være bullet prove nu?
Ret
> sikkerhedsmæssig, altså?

Det er lidt svært at sige uden at kende til din kode

Men en klasisk fejl har jeg skrevet en lille artikel om her:
http://activedeveloper.dk/aspdigital/2002053001.asp

--
Jakob Andersen



Jesper Stocholm (30-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 30-09-02 08:01

Flemming Jensen wrote :


> 1000-tak for det. Det var rigtigt smart. Det var også sådan noget
> ligende jeg selv tænkte på. Mit login system skulle altså være bullet
> prove nu? Ret sikkerhedsmæssig, altså?

Det klassiske spørgsmål: Opbevarer du dine brugeres passwords i klartekst i
din database ? Hvis du kan svare ja til dette, så vil jeg ikke kalde det
"bullit proof".



--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Flemming Jensen (30-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 30-09-02 09:17

Jesper Stocholm skrev:

> Det klassiske spørgsmål: Opbevarer du dine brugeres passwords i klartekst
i
> din database ? Hvis du kan svare ja til dette, så vil jeg ikke kalde det
> "bullit proof".

Sådan som der ser ud nu, så ja, det gør jeg. Har tænkt over at det måske
ikke er så god en idé, men eftersom jeg fik at vide fra en webmaster som har
en stor side med flere 1000 brugere, at de gør det samme, og ikke havde haft
problemer eller kunne se noget galt i det, tænkte jeg at den var god nok.

Har du en bedre idé til det? Hvis man kunne vælge password i Acess som
felttype eller noget ligende, hvor den så bare skrev ***** ville det være
let, men det mener jeg ikke kan lade sig gøre.

P.S. Hvis vi bruger mit bullet og dit proof, tror jeg vi får det stavet
rigtigt :)

__
Flemming Jensen



Jesper Stocholm (30-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 30-09-02 09:39

Flemming Jensen wrote :

> Jesper Stocholm skrev:
>
>> Det klassiske spørgsmål: Opbevarer du dine brugeres passwords i
>> klartekst i din database ? Hvis du kan svare ja til dette, så vil jeg
>> ikke kalde det "bullit proof".
>
> Sådan som der ser ud nu, så ja, det gør jeg. Har tænkt over at det
> måske ikke er så god en idé, men eftersom jeg fik at vide fra en
> webmaster som har en stor side med flere 1000 brugere, at de gør det
> samme

jeg synes du burde overveje, om det er en god idé at være medlem af dette
site - hvis du er det.

>, og ikke havde haft problemer eller kunne se noget galt i det,
> tænkte jeg at den var god nok.

Man skal altid overveje, hvem man spørger til råds.

> Har du en bedre idé til det? Hvis man kunne vælge password i Acess som
> felttype eller noget ligende, hvor den så bare skrev ***** ville det
> være let, men det mener jeg ikke kan lade sig gøre.

Det duer nok ikke, men du bør gemme dine passwords som "hash'ede" værdier
og ikke som de er indtastet af dine brugere. Prøv at søge [1] efter
"sha" i denne gruppe - der er masse af indlæg, der omhandler netop dette.
Jeg har lige siddet og kigget lidt i den database-backend, der kommer til
at være til FAQ for denne gruppe. Jeg kan se, at der er allerede er én,
der har tilmeldt sig som forfatter. Han har indtastet et password, som
potentielt kunne være det samme password, som han bruger til mail etc.
Blot for sjov, så forsøgte jeg lige at finde ud af, hvem det var, hvilke
mailservere han brugte og lignende. Det var faktisk ikke ret svært.
Min pointe er, at hvis nu denne bruger havde brugt hans "normale"
password, så kunne jeg i teorien prøve at logge ind på hans mailserver
og læse/sende mails, jeg kunne forsøge at logge på hans FTP-server med
dette password og ændre hans hjemmeside og lignende. Men da jeg ikke
opbevarer passwords som klartekst, så er det eneste jeg har i min
database denne streng:

kA612s8B35632B14841dFFC05F3FAD9Cj1B0EBD5 [2]

Dne kan jeg jo ikke bruge til noget, da jeg ikke kan gå fra strengen
tilbage til det oprindelige password.

Hvis du vil lege med at lave hash-værdier eller lignende, så kan du
hente det lille .Net program jeg lavede for at teste disse værdier.
Der er en lille bug i det, så det er på eget ansvar, at du afvikler
det på din PC. Jeg bruger det dog jævnligt, så det er ikke nogen stor
fejl. Hvis du hellere vil compile det selv, så ligger kildekoden også
derude [3].

> P.S. Hvis vi bruger mit bullet og dit proof, tror jeg vi får det
> stavet rigtigt :)

det har du vist ret i.

[1] http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&group=dk.edb.internet.webdesign.serverside.asp
[2] Hvis der nu skulle sidde nogle kreative derude, så har jeg rettet lidt
i strengen, så det heller ikke med dictionaty-attacks er muligt at finde
det oprindelige password.
[3] http://dotnet.stocholm.dk/txtHash

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Flemming Jensen (30-09-2002)
Kommentar
Fra : Flemming Jensen


Dato : 30-09-02 11:24

Jesper Stocholm skrev

> Det duer nok ikke, men du bør gemme dine passwords som "hash'ede" værdier
> og ikke som de er indtastet af dine brugere. Prøv at søge [1] efter
> "sha" i denne gruppe - der er masse af indlæg, der omhandler netop dette.

Det lyder ret smart. Kender ikke noget til hash'ede værdier, før nu. Har
godt nok tænkt på hvad den lange tekst, der nogle gange bliver overført fra
en URL til en anden på forskellige sider, egentlig er for noget. Men jeg
troede bare det var noget kode de selv havde lavet. Altså en eller andet
form for kryptering, hvor den eneste side har en funktion der kan krypter
den og den siden den bliver sendt til kan omdanne den til almindelig tekst
igen, men hvis der er en eller anden form for standard er det jo meget
lettere. Altså hvis man ikke selv skal til at kode sådan en funktion der
laver det til den lange kode og omvendt igen.

Men man har også et ansvar som ejer af et site med mange 1000 brugere. Altså
hvis jeg ikke lavede det om, hvilket jeg selvfølgelig gør, ville det stadig
kun være mig som kunne læse deres koder. Men jeg kan godt se, at hvis man
f.eks. bliver hacket eller på anden måde får sin database i de forkerte
hænder, er fanden løs. Man bruger jo nemlig samme kode til alt på nettet.

Så har jeg noget mere at gå i gang med :)
__
Flemming Jensen



Jesper Stocholm (30-09-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 30-09-02 12:22

Flemming Jensen wrote :

> Det lyder ret smart. Kender ikke noget til hash'ede værdier, før nu.
> Har godt nok tænkt på hvad den lange tekst, der nogle gange bliver
> overført fra en URL til en anden på forskellige sider, egentlig er for
> noget. Men jeg troede bare det var noget kode de selv havde lavet.
> Altså en eller andet form for kryptering, hvor den eneste side har en
> funktion der kan krypter den og den siden den bliver sendt til kan
> omdanne den til almindelig tekst igen,

det tror jeg nu ikke, at det er. Jeg tvivler på, at det er "reglen" at
informationer sendt i URL krypteres. Jeg tror snarere, at teksten er
Base64-kodet, hvilket ikke er kryptering - men blot en måde at få generel
tekst presset igennem en kanal (internet), der kun understøtter 7 bits.

> men hvis der er en eller anden
> form for standard er det jo meget lettere. Altså hvis man ikke selv
> skal til at kode sådan en funktion der laver det til den lange kode og
> omvendt igen.

vær opmærksom på, at du _ikke_ kan gå tilbage til den oprindelige tekst,
hvis du hash'er en tekststreng.

> Men man har også et ansvar som ejer af et site med mange 1000 brugere.
> Altså hvis jeg ikke lavede det om, hvilket jeg selvfølgelig gør,
> ville det stadig kun være mig som kunne læse deres koder.

Som Jørn Andersen tidligere har påpeget, så er det også en forsikring til
dig selv. Hvis du bliver anklaget af en bruger for at have misbrugt hans
password, så står du meget stærkere, hvis du kan sige, at du slet ikke har
adgang til hans password i klartekst. Det er jo som bekendt en smule svært
at bevise, at man _ikke_ har gjort noget. Din bruger kunne jo finde på at
sige, at det eneste sted han ellers havde brugt sit password til sin
netbank var ved signup til din service.

> Men jeg kan
> godt se, at hvis man f.eks. bliver hacket eller på anden måde får sin
> database i de forkerte hænder, er fanden løs. Man bruger jo nemlig
> samme kode til alt på nettet.

ja ... og selv de IT-professionelle - hvortil jeg såmænd regner mig selv -
er nok de værste. Jeg har fx et utal af passwords at huske på, så
fristelsen til blot at bruge det samme er jo stor.

> Så har jeg noget mere at gå i gang med :)

god fornøjelse ...

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Flemming Jensen (01-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 01-10-02 09:37

Findes der ikke en funktion i VB som kan gøre det? En eller anden komando
der kan omdanne en string til hash værdien af stringen?

__
Flemming Jensen



Jesper Stocholm (01-10-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 01-10-02 09:50

Flemming Jensen wrote :

> Findes der ikke en funktion i VB som kan gøre det? En eller anden komando
> der kan omdanne en string til hash værdien af stringen?

Jo ... men du har ikke direkte adgang til VBs fulde bibliotek i ASP ... men
du kan jo lave en komponent i VB/C++, der arbejder med Windows' Crypto API.
Deri findes funktionerne. Du kan dog finde scripts, der kan gøre det samme
- men performance er ikke specielt god. Du kan finde sådan et på min
hjemmeside http://asp.stocholm.dk/md5.asp .

Ellers har du fuld adgang til alle disse funktioner i .Net, så det kunne du
også kigge lidt på.



--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408540
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste