/ 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 og sikkerhed
Fra : Christian M. Nielsen


Dato : 19-12-02 16:30

Hvordan laver man sin database hvis der er tilsluttet flere brugere og de
ikke må have lov til at se andres data?

Jeg har pt. en tabel med deres info samt BrugerID og PWD.

Hvis jeg logger ind og efterfølgende ændrer i url'en kan jeg se de info der
er indtastet om andre brugere.

udsnit af url visinfo.asp?brugerid=1&action=show Hvis jeg ændrer brugerid
til 2 ser jeg de info der er om den gældende person

Jeg bruger nedenstående til at undersøge om man er logget ind, men den tager
ikke højde for om man har rettighed til at se de info man kan få adgang til
ved at ændre i url'en.

<%
If isEmpty(Session("BrugerID")) Then
Response.Redirect("login.asp")
End If
%>

Mit login ser således ud


strSQL = "SELECT BrugerID FROM tblNewbizz WHERE (PWD = '" & strPassword &
"') AND (BrugerID = " & strBruger & ")"

Set oRs = oConn.Execute(strSQL)

If Not (oRs.BOF or oRs.EOF) Then
intUID = oRs("BrugerID")
Else
strERR = "forkert.gif"
End If

oRs.Close
oConn.Close
Set oConn = Nothing
Set oRs = Nothing

If Len(intUID) Then

Session("BrugerID") = intUID
Response.Redirect("visinfo.asp?brugerid=" & strBruger & "&action=show")

End If
Else
strErr = "forkert.gif"
End If



--

Mvh / Regards

-=< Christian >=-
ICQ: 25308942
http://www.cmnielsen.dk
Hvis man kloner en sørøver, får man så en piratkopi?



 
 
Christian M. Nielsen (19-12-2002)
Kommentar
Fra : Christian M. Nielsen


Dato : 19-12-02 16:32


"Christian M. Nielsen" <christian@(REMOVE)cmnielsen(DOT)dk> wrote in message
news:3e01e60f$0$1758$ba624c82@nntp03.dk.telia.net...
> Hvordan laver man sin database hvis der er tilsluttet flere brugere og de
> ikke må have lov til at se andres data?

Det er jo ikke sikkert at det er databasen der skal laves om, men nok mere
login proceduren?

--

Mvh / Regards

-=< Christian >=-
ICQ: 25308942
http://www.cmnielsen.dk
Hvis man kloner en sørøver, får man så en piratkopi?



Jakob Andersen (19-12-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-12-02 17:33

"Christian M. Nielsen" <christian@(REMOVE)cmnielsen(DOT)dk> wrote
> udsnit af url visinfo.asp?brugerid=1&action=show
[SNIP]
> If isEmpty(Session("BrugerID")) Then
> Response.Redirect("login.asp")
> End If

Hvis du har brugerID'et i en session hvorfor sender du det så med i
querystringen?

--
Jakob Andersen



Christian M. Nielsen (19-12-2002)
Kommentar
Fra : Christian M. Nielsen


Dato : 19-12-02 20:29


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:atss9c$2ti1$1@news.cybercity.dk...

> > udsnit af url visinfo.asp?brugerid=1&action=show
> [SNIP]
> > If isEmpty(Session("BrugerID")) Then
> > Response.Redirect("login.asp")
> > End If
>
> Hvis du har brugerID'et i en session hvorfor sender du det så med i
> querystringen?

Fordi jeg ikke vidste at jeg kunne bruge det på den måde, men det er jo
ganske smart (og indlysende nu hvor jeg er gjort opmærksom på muligheden)

Tak og god jul.
--

Mvh / Regards

-=< Christian >=-
ICQ: 25308942
http://www.cmnielsen.dk
Hvis man kloner en sørøver, får man så en piratkopi?



Niels Henriksen (20-12-2002)
Kommentar
Fra : Niels Henriksen


Dato : 20-12-02 10:08

"Christian M. Nielsen" <christian@(REMOVE)cmnielsen(DOT)dk> skrev i en
meddelelse news:3e021de7$0$2584$ba624c82@nntp04.dk.telia.net...
>
> Fordi jeg ikke vidste at jeg kunne bruge det på den måde, men det er jo
> ganske smart (og indlysende nu hvor jeg er gjort opmærksom på muligheden)
>
Du kan også benytte et GUID (Global Unique Identifier) istedet for et tal,
idet man altid vil kunne gætte det næste tal (kig blot på scor.dk
profilsystem hvor det "har"været nemt at se alle billeder).

Et GUID er et 32 tegn langt "nummer" som består af tal og bogstaver. Det er
jeg begyndt at bruge konsekvent og det betyder at ingen kan gætte hvad det
næste ID vil være i rækken

--
Niels Henriksen
bigtiger.dk - det vildeste webhotel



Jesper Stocholm (20-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 20-12-02 11:29

Niels Henriksen wrote :

> Et GUID er et 32 tegn langt "nummer" som består af tal og bogstaver.

hvordan laver du dette nummer ?


--
Jesper Stocholm - http://stocholm.dk - http://asp-faq.dk
Skriv venligst under det du svarer på og skær det overflødige væk.
Se evt hvorfor på http://www.usenet.dk/netikette/citatteknik.html
Svar venligt til gruppen og ikke til mig privat !

Niels Henriksen (20-12-2002)
Kommentar
Fra : Niels Henriksen


Dato : 20-12-02 12:55


"Jesper Stocholm" <jespers@stocholm.invalid> skrev i en meddelelse
news:Xns92EA74D53B333spamstocholmdk@130.226.1.34...
> Niels Henriksen wrote :
>
> > Et GUID er et 32 tegn langt "nummer" som består af tal og bogstaver.
>
> hvordan laver du dette nummer ?
>
>

Jeg bruger http://www.serverobjects.com/products.htm#free GUIDMaker.´


--
Niels Henriksen
bigtiger.dk - det vildeste webhotel



Jesper Stocholm (20-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 20-12-02 13:10

Niels Henriksen wrote :

> "Jesper Stocholm" <jespers@stocholm.invalid> skrev i en meddelelse
> news:Xns92EA74D53B333spamstocholmdk@130.226.1.34...
>> Niels Henriksen wrote :
>>
>> > Et GUID er et 32 tegn langt "nummer" som består af tal og bogstaver.
>>
>> hvordan laver du dette nummer ?
>
> Jeg bruger http://www.serverobjects.com/products.htm#free GUIDMaker.´

ok ... nu er det jo ikke lige til at komme til koden i dll'en, så jeg
kunne ikke lige se, hvordan disse tilfældige strenge laves. Jeg har
dog selv for et par uger siden lavet en stump kode til generering af
tilfældige strenge til auto-generering af passwords:

private function doRndString
   dim strPswd
   strPswd = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

      dim intI,j
      dim strTemp
      strTemp = ""
      j = 0
      for intI = 0 to 31
         Randomize
         j = 1 + int(61.0*Rnd())
         strTemp = strTemp & mid(strPswd,j,1)
      next
end function

Denne burde dog teoretisk gøre det samme. Den anvender VBS's indbyggede
tilfældighedsgenerator, der initialiseres for hvert password den laver.

Jeg har desværre ikke testet den ved fx 100.000 indsættelser i en
tabel, men den "burde" kunne holde til det.



--
Jesper Stocholm - http://stocholm.dk
** Vil det sige, at ham Lars er et stort brød på 15 år ? **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Jakob Andersen (20-12-2002)
Kommentar
Fra : Jakob Andersen


Dato : 20-12-02 20:49

"Niels Henriksen" <niels@biggs.dk> wrote
> Du kan også benytte et GUID (Global Unique Identifier) istedet for et tal,
> idet man altid vil kunne gætte det næste tal (kig blot på scor.dk
> profilsystem hvor det "har"været nemt at se alle billeder).

Hvis et systems databasestruktur er bygget ordentligt op burde det ikke være
muligt at tiltvinge sig adgang ved at gætte næste nummer.

Scor.dk's problemer drejede sig om at billederne kunne tilgås direkte på
serverensfilsystem og derfor kunne man se billederne ved at gætte på et
billednavn.

--
Jakob Andersen



Jens Gyldenkærne Cla~ (20-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-12-02 13:44

Niels Henriksen skrev:

>> > Et GUID er et 32 tegn langt "nummer" som består af tal og
>> > bogstaver.

> Jeg bruger http://www.serverobjects.com/products.htm#free
> GUIDMaker.´

Bruger man mssql kan man benytte funktionen NEWID() ("select
newid() as nytGuid")
--
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

Jesper Stocholm (20-12-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 20-12-02 13:30

Christian M. Nielsen wrote :

> Hvordan laver man sin database hvis der er tilsluttet flere brugere og
> de ikke må have lov til at se andres data?
>
> Jeg har pt. en tabel med deres info samt BrugerID og PWD.
>
> Hvis jeg logger ind og efterfølgende ændrer i url'en kan jeg se de
> info der er indtastet om andre brugere.
>
> udsnit af url visinfo.asp?brugerid=1&action=show Hvis jeg ændrer
> brugerid til 2 ser jeg de info der er om den gældende person

Det er måske lidt overkill i dit tilfælde, men du kan med anvendelse
af fx MD5-hashfunktionen lave en "fattigmands" digital signatur af de
data du videresender. Den digitale signatur bevirker, at man ikke lige
umiddelbart kan ændre i de data, der medsendes fra din applikation.
Hvis du fx medsender

visinfo.asp?brugerid=1&action=show

Så udregner du også en signatur og medsender den. Signaturen udregnes på
baggrund af her tallet 1 og strengen "show". Din URI bliver dermed

visinfo.asp?brugerid=1&action=show&checksum=ere35ervhdhvfxdgvxd

checksum udregnes på følgende måde:

checksum = MD5(<hemmelig streng> & Request.QueryString("brugerid") & Request.QueryString("action"))

Da du er den eneste, der kender denne hemmelige streng, så kan andre ikke
udregne den. Når du så skal checke dine data, så gøres det således:

strCheck = MD5(<hemmelig streng> & Request.QueryString("brugerid") & Request.QueryString("action"))
if Request.Querystring("checksum") = strCheck then
   ' gør noget
else
   Response.Write "Du må ikke ændre i URI !"
end if

Hvis man nu er en ond bruger og ændrer URI

visinfo.asp?brugerid=1&action=show&checksum=ere35ervhdhvfxdgvxd

til

visinfo.asp?brugerid=2&action=show&checksum=ere35ervhdhvfxdgvxd

Så vil værdien ere35ervhdhvfxdgvxd ikke stemme overens med de data du
overfører, her 2-tallet og strengen "show", og du vil opdage, at der er
ændret i URI.

MD5-funktionen er (næsten) lineær i udførsel, så det bør ikke medføre
store ændringer i performance af din applikation at udregne disse ting.

Jeg har lavet dette konsekvent på sitet http://usedbooks.dk, hvor der
overføres data i URI, og jeg må indrømme, at jeg selv var overrasket
over, hvor godt det virker. Ting som input-validering bliver også
nemmere - ja, nærmest ikke-eksisterende.



http://usedbooks.dk/books/?id=1039019431&checksum=08794813d5cca2700b5290649bfa7ba1

--
Jesper Stocholm - http://stocholm.dk
FAQ for dk.edb.internet.webdesign.serverside.asp : http://asp-faq.dk
Svar til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Christian M. Nielsen (21-12-2002)
Kommentar
Fra : Christian M. Nielsen


Dato : 21-12-02 14:53

Tak for alle svarene. Det har været lærerigt.

--

Mvh / Regards

-=< Christian >=-

*<|=(||||||::::::¦

http://www.cmnielsen.dk ICQ: 25308942
Destiny is not a matter of chance it is a matter of choice



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

Månedens bedste
Årets bedste
Sidste års bedste