/ 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 igen igen
Fra : Ukendt


Dato : 18-01-05 12:19

Hej igen (igen)

Der har været flere tråde omkring login-systemer.

Jeg har fundet frem til noget, som jeg evt. godt kunne tænke mig at bruge,
men vil gerne have hjælp til at forstå asp-koden. Jeg kan godt få koden til
at beskytte mine sider, men for at lære og selv kan (op)rette, så mangler
jeg lidt forståelse.

Samtidig vil jeg høre, om det er en brugbart løsning, som jeg har fundet.

Yderligere kommer der et par tillægsspørgsmål nederst.

Koden herunder skal indsættes på alle sider, som jeg ønsker at beskytte.

---

<%
If not Session("BrugerNummer") = Empty then

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=; DBQ=" &
Server.MapPath("../../database/user.mdb")
Conn.Open DSN

strSQL = "Select * From TblBruger Where BrugerId = " &
Int(Session("BrugerNummer"))
Set HentBrugerData = Conn.Execute(strSQL)

strSQL = "Select * From TblAdgang Where AdgangNummer = " &
Int(HentBrugerData("BrugerAdgang"))
Set HentAdgangData = Conn.Execute(strSQL)

strSQL = "Select * From TblSideNavne Where AdgangId = " &
Int(HentAdgangData("AdgangId"))
Set HentSideData = Conn.Execute(strSQL)

If not HentSideData.Eof then

do
siden = "/" & HentSideData("SideNavn")
HentSideData.movenext
Loop until HentSideData.Eof or Request("URL") = siden or siden = "/*"

if siden <> "/*" then
if Request("URL") <> siden then
response.redirect "../uautoriseretadgang.asp"
end if
End If
else
response.redirect "../uautoriseretadgang.asp"
End If
else
response.redirect "../default.asp"
end if

%>

---

Tillægsspørgsmål:

Det ser umiddelbart ud til, at den ikke kan registrere et log-out. Evt.
kører det på tid. Jeg kan i hvert fald både gå til sider, der ikke er
beskyttet, for derefter at gå uhindret "tilbage" på den beskyttede side,
men jeg kan også efter et login besøge ethvert andet tilgængeligt websted
for bagefter i adresselinien at skrive stien på en beskyttet side, hvorefter
jeg også uhindret får adgang til denne. Disse to ting er jo ikke
hensigtsmæssige eller tegn på sikkerhed. Kan de fixes?

Evt. vil det yderligere være smart at have et log-out link, der logger ud.

Såfremt der mangler oplysninger, så spørg endelig

/Michael




 
 
pepss (18-01-2005)
Kommentar
Fra : pepss


Dato : 18-01-05 13:07


"Michael Sørensen" skrev
> Jeg har fundet frem til noget, som jeg evt. godt kunne tænke mig at bruge,
> men vil gerne have hjælp til at forstå asp-koden. Jeg kan godt få koden
> til
> at beskytte mine sider, men for at lære og selv kan (op)rette, så mangler
> jeg lidt forståelse.
>
> Samtidig vil jeg høre, om det er en brugbart løsning, som jeg har fundet.

det kommer jo helt and på hvad det skal beskytte til en homebank er det
jo nok ikke godt nok men ellers er det vel....

her bliver det tekker om Session("BrugerNummer") er tom, hvis den er køre
koden vider

> If not Session("BrugerNummer") = Empty then

opretter forbindelse til databasen

> Set Conn = Server.CreateObject("ADODB.Connection")
> DSN = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=; DBQ=" &
> Server.MapPath("../../database/user.mdb")
> Conn.Open DSN

henter ALT(det er ikke smat at hente alt ud når du kun skal bruge et felt)
fra tablen TblBruger hvor BrugerId er = med din Session

> strSQL = "Select * From TblBruger Where BrugerId = " &
> Int(Session("BrugerNummer"))

det du nu har nentet du er = HentBrugerData

> Set HentBrugerData = Conn.Execute(strSQL)

her hentet du igen alt fra tablen TblAdgang hvor feltet AdgangNummer er =
HentBrugerData("BrugerAdgang") altså det du fik ud i siste SQL kald

> strSQL = "Select * From TblAdgang Where AdgangNummer = " &
> Int(HentBrugerData("BrugerAdgang"))

HentAdgangData er nu = det du fik ud

> Set HentAdgangData = Conn.Execute(strSQL)

det samme igen

> strSQL = "Select * From TblSideNavne Where AdgangId = " &
> Int(HentAdgangData("AdgangId"))
> Set HentSideData = Conn.Execute(strSQL)

hvis ikke dit set (HentSideData) er tomt køre koden vider

> If not HentSideData.Eof then

starter en løkke

> do

siden er = /en adr_fra_databasen

> siden = "/" & HentSideData("SideNavn")

gå vider til næste rakke i det SQL kald

> HentSideData.movenext

køre løkken vider ind til der ikke er flere rakker i dit database set eller
Request("URL") = side eller side er = /*

> Loop until HentSideData.Eof or Request("URL") = siden or siden = "/*"

hvis side er forskælig fra /* køre koden vider

> if siden <> "/*" then

hvis Request("URL") er forskælig fra side køre koden vider

> if Request("URL") <> siden then

sendes brugeren til uautoriseretadgang.asp

> response.redirect "../uautoriseretadgang.asp"
> end if
> End If

hvis brugeren ikke er i databasen sendes han til uautoriseretadgang.asp

> else
> response.redirect "../uautoriseretadgang.asp"
> End If

ellers sendes brugeren til default.asp

> else
> response.redirect "../default.asp"
> end if


> Det ser umiddelbart ud til, at den ikke kan registrere et log-out. Evt.
> kører det på tid. Jeg kan i hvert fald både gå til sider, der ikke er
> beskyttet, for derefter at gå uhindret "tilbage" på den beskyttede side,
> men jeg kan også efter et login besøge ethvert andet tilgængeligt websted
> for bagefter i adresselinien at skrive stien på en beskyttet side,
> hvorefter
> jeg også uhindret får adgang til denne. Disse to ting er jo ikke
> hensigtsmæssige eller tegn på sikkerhed. Kan de fixes?

grunden til det er at der bliver tekket på Session som nomal ud løber efter
30 min(kan ikke helt huske det men tror det er sådan)

> Evt. vil det yderligere være smart at have et log-out link, der logger ud.

jo det ville det jo nok....

håber det kunne bruges!


--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



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

Månedens bedste
Årets bedste
Sidste års bedste