/ 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
Sikkerhed
Fra : Gert Simonsen


Dato : 12-08-04 07:25

Hej

Jeg har et sikkerhedsproblem med en side:
http://www.logporten.dk/demo/se_log1.asp?brugernavn=elev
hvis elev så ændrer siden til:
http://www.logporten.dk/demo/se_log1.asp?brugernavn=lærer
så kan elev læse lærers side...... det er ikke så godt!!

Jeg har følgende øverst på siden:
<%
' *** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers="admin,teacher,elev"
MM_authFailedURL="log_paa.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
If (false Or CStr(Session("MM_UserAuthorization"))="") Or _

(InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1)
Then
MM_grantAccess = true
End If
End If
If Not MM_grantAccess Then
MM_qsChar = "?"
If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
MM_referrer = Request.ServerVariables("URL")
if (Len(Request.QueryString()) > 0) Then MM_referrer =
MM_referrer & "?" & Request.QueryString()
MM_authFailedURL = MM_authFailedURL & MM_qsChar &
"accessdenied=" & Server.URLEncode(MM_referrer)
Response.Redirect(MM_authFailedURL)
End If
%>
Det vil jo sige at man skal være logget på for at se siden
men det er jo ikke nok da session stadig er elev (hvis det er
elev der er logget på)

Hele koden ligger på: http://www.logporten.dk/kode.txt
Hvad kan jeg gøre?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Gert Simonsen (12-08-2004)
Kommentar
Fra : Gert Simonsen


Dato : 12-08-04 08:39

Gert Simonsen wrote in dk.edb.internet.webdesign.serverside.asp:


> Jeg har følgende øverst på siden:
&gt; If Session("MM_Username") <> "" Then

Hov - her kom jeg til at tænke på kunne jeg ikke lave noget i
stil med:
If Session("MM_Username") = Session("MM_Username") Then
og så hente siden......

Ja ja - jeg ved det godt...ASP er ikke min stærke side, men jeg
har virkelig et kæmpe problem her!

Hilsen Gert Simonsen


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Gert Simonsen (12-08-2004)
Kommentar
Fra : Gert Simonsen


Dato : 12-08-04 10:03

Utroligt og så i denne varme.....!

Jeg har selv siddet og bakset med det.
Og kommet frem til dette:

If (Request.QueryString("brugernavn") <> Session("MM_Username"))
Then
Response.Redirect "forbudt.asp"
else

Åh - jeg er så glad, ASP er en dejlig ting

Hilsen Gert Simonsen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (12-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-08-04 10:21

Gert Simonsen skrev:

> Jeg har et sikkerhedsproblem med en side:
> http://www.logporten.dk/demo/se_log1.asp?brugernavn=elev

Jeg bliver henvist til <http://www.logporten.dk/demo/forbudt.asp>


> http://www.logporten.dk/demo/se_log1.asp?brugernavn=lærer

- og det samme sker med denne adresse.


> så kan elev læse lærers side...... det er ikke så godt!!

To generelle ting vedr. login:

a) Brug altid brugernavn + adgangskode - ikke blot brugernavn.
Sikkerheden er langt bedre med to koder. Brugernavnet kan fint være
et "logisk" navn - fx "elev" eller "lærer", mens adgangskode ikke
må være for let at gætte (kræv fx både bogstaver og tal og mindst 6
tegn)

b) Undgå at smide koder op i adressefeltet hvor de dels kan aflæses
og dels kan ændres. Brug POST i stedet for GET til login-
formularer, så kan man ikke se de værdier der sendes til formen så
let.

Mht. adgangskoder er det en god ide at undgå at gemme dem i
databasen. Hvis man gemmer adgangskoder i databasen risikerer man
at de kan blive læst af uvedkommende - enten hvis siden bliver
hacket eller hvis en person på anden måde får adgang til serveren.
Løsningen er at gemme hashede adgangskoder i stedet. Hash-værdien
af en adgangskode kan bruges til at validere et login (man
sammenligner hash-værdien af den indtastede adgangskode med den
gemte hash-værdi) - men den kan ikke bruges til at finde frem til
adgangskoden og dermed heller ikke til at logge ind på siden.

Metoden er forklaret her: <http://www.asp-faq.dk/article/?id=52>.


> Det vil jo sige at man skal være logget på for at se siden
> men det er jo ikke nok da session stadig er elev (hvis det er
> elev der er logget på)

Mht. session-variable, så er den eneste sikre måde man kan slutte
en login-session på at lukke browseren. Man kan sætte nogle
parametre der beder browseren om ikke at cache siderne (se
<http://www.asp-faq.dk/article/?id=70>), men man skal stadig bede
brugerne om at lukke browseren efter logout.


> Hele koden ligger på: http://www.logporten.dk/kode.txt

Det er en ret uoverskuelig kode - nogle funktioner eller
procedurer, samt passende kommentarer ville hjælpe gevaldigt på
læsbarheden - men det er svært at få med et grafisk baseret program
(DreamWeaver). Jeg kender meget lidt til DW, men jeg vil tro at der
er nogle skabeloner eller funktioner til at lave loginsystemer med
både brugernavn og adgangskode.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (12-08-2004)
Kommentar
Fra : Ukendt


Dato : 12-08-04 14:29

> To generelle ting vedr. login:
Jeg bruger så sandelig også brugernavn og kode for at logge ind.
Men det kunne godt være jeg skulle prøve at læse lidt om Hash-værdien
af en adgangskode.

Problemet jeg havde, var når f.eks eleven var logget ind og ville se sin
logbog:
http://www.logporten.dk/demo/se_log1.asp?brugernavn=elev
så behøvede eleven blot at erstatte sit brugernavn i adressefeltet med en
andens elevs brugernavn og frit kunne læse fortrolige ting som kun kommer
læreren ved...
Du er velkommen til at se det i funktion på: www.logporten.dk/demo

Men jeg har løst det ved at indsætte koden:
If (Request.QueryString("brugernavn") <> Session("MM_Username"))
Then
Response.Redirect "forbudt.asp"
else



Hilsen Gert Simonsen



Jens Gyldenkærne Cla~ (12-08-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-08-04 14:36

Gert Simonsen skrev:

> Jeg bruger så sandelig også brugernavn og kode for at logge
> ind.

O.k. - så er jeg straks mere rolig.


> Problemet jeg havde, var når f.eks eleven var logget ind og
> ville se sin logbog:
> http://www.logporten.dk/demo/se_log1.asp?brugernavn=elev

Jamen - hvis eleven er logget ind, har du vel brugernavnet
tilgængeligt i en sessionvariabel. Så behøver du slet ikke bruge
querystring til overføre det til log-siden.


> Men jeg har løst det ved at indsætte koden:
> If (Request.QueryString("brugernavn") <>
> Session("MM_Username")) Then
> Response.Redirect "forbudt.asp"
> else

Det er fint hvis det virker. Men overvej at lade logbogen læse
session-variablen direkte.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (12-08-2004)
Kommentar
Fra : Ukendt


Dato : 12-08-04 15:31

> Jamen - hvis eleven er logget ind, har du vel brugernavnet
> tilgængeligt i en sessionvariabel. Så behøver du slet ikke bruge
> querystring til overføre det til log-siden.

(Klask på panden) - selvfølgelig, hmmm... dreamweaver i en nøddeskal!!!
Jeg har vist lige noget jeg skal have set på!

Hilsen Gert



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste