/ 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 : René Poulsen


Dato : 06-11-03 13:50

Hejsa igen!

Jeg har udforsket nogle områder indenfor ASP, men stadig ikke
hvorvidt de ting jeg "laver" er sikre.

F.eks. har jeg lavet et meget simpelt login hvor der er et
brugernavn og en kode der matcher sammen i en database (access).

Jeg bruger en form hvor man indtaster brugernavn og kodeord og så
kontrollerer jeg så i databasen om de passer sammen - gør de det
er man så logget ind og gør de ikke er man selvfølgelig ikke
logget ind og man får en besked derom.

Er det sikkert? Eller kan det nem brydes af hackere eller andre
snu mennesker ( ikke fordi jeg forventer at få hacker besøg på
min lille side )???

/René

--
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

 
 
Lars Hoffmann (06-11-2003)
Kommentar
Fra : Lars Hoffmann


Dato : 06-11-03 14:19

"René Poulsen" <fcpoulsen@hotmail.com> escribió en el mensaje
news:bodg1b$sq$1@sunsite.dk...

> Er det sikkert? Eller kan det nem brydes af hackere eller andre
> snu mennesker ( ikke fordi jeg forventer at få hacker besøg på
> min lille side )???

Det kommer jo an på hvordan og hvorledes du har lavet det. Såfremt du
gemmer din database udenfor webscope, sørger for at dine password og
brugernavne er lange nok, at lave ' om til '' i dit brugernavn og
password felt, skulle det være sikkert nok, men for at svare dig mere
præcist, har vi brug for enten at se kode eller få en URL serveret.
Med venlig hilsen
Lars Hoffmann



Jens Gyldenkærne Cla~ (06-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-11-03 14:19

René Poulsen skrev:

> Jeg bruger en form hvor man indtaster brugernavn og kodeord og så
> kontrollerer jeg så i databasen om de passer sammen - gør de det
> er man så logget ind og gør de ikke er man selvfølgelig ikke
> logget ind og man får en besked derom.

Er du sikret mod sql-injection? Se hvordan et helt basalt
sikkerhedstjek laves her: <http://asp-faq.dk/article/?id=95>.


> Er det sikkert? Eller kan det nem brydes af hackere eller andre
> snu mennesker ( ikke fordi jeg forventer at få hacker besøg på
> min lille side )???

En anden mulig sikkerhedsbrist er at gemme adgangskoder som
klartekst i databasen. Så længe der ikke er uvedkommende der får
adgang til basen kan det være sikkert nok, men hvis databasen
bliver fundet af en hacker, er fanden løs.

Derfor er det en god ide at hashe adgangskoder - Jesper Stocholm
har skrevet en fin artikel om det her:
   <http://asp-faq.dk/article/?id=52>


Andre mulige sikkerhedsbrister er
- at have databasen liggende i webscope (så den kan downloades hvis
man gætter adressen)
- at tillade for lette adgangskoder
- at tillade kontinuerlige logonforsøg

Det er ikke muligt at lave et 100 % sikkert system, men det er som
regel altid muligt at lave et system der er sikkert nok. Nogle
basale ting - som fx sikring mod sql-injection - bør altid være i
brug, mens andre (fx ip-restriktion for login) er at skyde
gråspurve med kanoner ved simple loginsystemer.

--
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

René Poulsen (06-11-2003)
Kommentar
Fra : René Poulsen


Dato : 06-11-03 14:54

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Andre mulige sikkerhedsbrister er
> - at have databasen liggende i webscope

Hmmm... hvad er webscope?

Jeg kan godt se at der er mange muligheder for at det kan brydes
Men som sagt kan man jo aldrig lave noget 100% sikkert.

Tak for den rigtig gode hjælp!

/René

--
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~ (06-11-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-11-03 15:08

René Poulsen skrev:

>> - at have databasen liggende i webscope
>
> Hmmm... hvad er webscope?

Det område på webserveren der kan nås fra internettet.

Hvis en webserver fx har roden af websitet eksempel.dk i D:\www så
er alt der ligger under D:\www med i webscope. Derfor vil en
database i D:\www\db kunne nås via eksempel.dk/db - men ligger
databasen i D:\databaser\ kan den ikke nås via en browser (man kan
ikke skrive www.xyz.com/../databaser)

--
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

René Poulsen (06-11-2003)
Kommentar
Fra : René Poulsen


Dato : 06-11-03 15:19

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> René Poulsen skrev:
>
> >> - at have databasen liggende i webscope
> >
> > Hmmm... hvad er webscope?
>
> Det område på webserveren der kan nås fra internettet.
>
> Hvis en webserver fx har roden af websitet eksempel.dk i D:\www så
> er alt der ligger under D:\www med i webscope. Derfor vil en
> database i D:\www\db kunne nås via eksempel.dk/db - men ligger
> databasen i D:\databaser\ kan den ikke nås via en browser (man kan
> ikke skrive www.xyz.com/../databaser)
>
Ok! Det vil sige at flytte databasen udenfor dette område, lave
minimum antal tegn til f.eks. 6 og så prøve at sikre sig mod SQL
Injection )som Thomas Due beskriver) ville give en forholdsvis sikker
login?

/René

--
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

Lars Hoffmann (06-11-2003)
Kommentar
Fra : Lars Hoffmann


Dato : 06-11-03 16:48


"René Poulsen" <fcpoulsen@hotmail.com> escribió

> Ok! Det vil sige at flytte databasen udenfor dette område, lave
> minimum antal tegn til f.eks. 6 og så prøve at sikre sig mod SQL
> Injection )som Thomas Due beskriver) ville give en forholdsvis
sikker
> login?

Ja bestemt, hvis du derudover sikrer dig at en bruger ikke kan
indtaste en password forkert mere end f.eks 10 gange er du også godt
sikret imod brute force angreb.
Med venlig hilsen
Lars Hoffmann



Thomas Due (06-11-2003)
Kommentar
Fra : Thomas Due


Dato : 06-11-03 14:21

René Poulsen[fcpoulsen@hotmail.com] wrote in [<bodg1b$sq$1@sunsite.dk>]:

> Jeg bruger en form hvor man indtaster brugernavn og kodeord og så
> kontrollerer jeg så i databasen om de passer sammen - gør de det
> er man så logget ind og gør de ikke er man selvfølgelig ikke
> logget ind og man får en besked derom.
>
> Er det sikkert? Eller kan det nem brydes af hackere eller andre
> snu mennesker ( ikke fordi jeg forventer at få hacker besøg på
> min lille side )???

Det kommer jo lidt an på HVORDAN du gemmer det i databasen, og checker
det. Hvis du bare laver en

"SELECT * FROM Brugere WHERE (Brugernavn='" & navn & _
")' AND (kodeord='" & kodeord & "')"

Så er den ret nem at bryde, og kan vist nok endda resultere i sletning
af data, hvis "hackeren" kender navnet på en eller flere af dine
tabeller.

Hvis jeg indtastede følgende i brugernavn og kodeord ville jeg få
adgang med SQL sætningen ovenover:

' or '1'='1'

Idet SQL sætningen så kommer til at se således ud:

"SELECT * FROM Brugere WHERE (Brugernavn='' OR '1'='1') AND
(Password='' or '1'='1')"

Den vil altid returnere noget, og derved vil jeg få adgang.

Endnu værre så kan man ved nogle databaser (MSSQL mener jeg) gøre
følgende
Brugernavn: "' or '1'='1';drop table brugere"

Idet nogle databaser opfatter ";" som en kommando separator, og der er
derfor TO kommandoer der skal udføres.

Den sikre måde at sikre imod denne form for angreb som kaldes SQL
Injection er at bruge parametre:

** UTESTET **

Set Cmd = Server.CreateObject("ADODB.Command")
Cmd.ActiveConnection = DB ' Aktiv connection
Cmd.CommandText = "SELECT * FROM Brugere " & _
"WHERE Brugernavn=@navn AND " & _
"Kodeord=@Pwd"
Cmd.Parameters.add(Cmd.CreateParameter("@navn", navn))
Cmd.Parameters.add(Cmd.CreateParameter("@Pwd", kodeord))
RecordSet = Cmd.Execute

Jeg har ikke testet den ovenstående kode, men den burde give dig en ide
om hvordan man kan gøre.

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
Posted with XanaNews version 1.15.7.4

Gunnar S. Müller (11-11-2003)
Kommentar
Fra : Gunnar S. Müller


Dato : 11-11-03 21:32

Hrm - Indrømmet, det er lidt omstændigt, men fidusen er at gemme passwords i
en "oversat" form - og sæt nu en eller anden fik fat i tabellen med usere og
passwords??? (Der er stadig mange folk der bruger det samme password til
alle mulige ting, ikke "bare" din hjemmeside !)

Første tildeling af passwords (foretages f.eks. af administrator ifm. eller
ved oprettelse af bruger):
Password i almindelig tekstform oversættes til en hash-kode (Brugbar ASP
kode: http://www.frez.co.uk/freecode.htm#md5 ), og gemmes på tabellen med
bruger/pasword

Når en bruger logger på:
Inden der foretages sammenligning mellem det password en bruger har angivet
ved login, og hvad der står på tabellen, konverteres brugerens password med
den samme hash-funktion - så det er hash-værdierne der sammenlignes inden
der gives/nægtes adgang.

Derved sikre du dig 100% imod at der er nogen "opfindsomme" som prøver med
.... OR 1 = 1 eller lignende.

God fornøjelse
Gunnar S. Müller


"Thomas Due" <tdue@mail_remove_.dk> skrev i en meddelelse
news:bodhs5$mjg$1@sunsite.dk...
> René Poulsen[fcpoulsen@hotmail.com] wrote in [<bodg1b$sq$1@sunsite.dk>]:
>
> > Jeg bruger en form hvor man indtaster brugernavn og kodeord og så
> > kontrollerer jeg så i databasen om de passer sammen - gør de det
> > er man så logget ind og gør de ikke er man selvfølgelig ikke
> > logget ind og man får en besked derom.
> >
> > Er det sikkert? Eller kan det nem brydes af hackere eller andre
> > snu mennesker ( ikke fordi jeg forventer at få hacker besøg på
> > min lille side )???
>
> Det kommer jo lidt an på HVORDAN du gemmer det i databasen, og checker
> det. Hvis du bare laver en
>
> "SELECT * FROM Brugere WHERE (Brugernavn='" & navn & _
> ")' AND (kodeord='" & kodeord & "')"
>
> Så er den ret nem at bryde, og kan vist nok endda resultere i sletning
> af data, hvis "hackeren" kender navnet på en eller flere af dine
> tabeller.
>
> Hvis jeg indtastede følgende i brugernavn og kodeord ville jeg få
> adgang med SQL sætningen ovenover:
>
> ' or '1'='1'
>
> Idet SQL sætningen så kommer til at se således ud:
>
> "SELECT * FROM Brugere WHERE (Brugernavn='' OR '1'='1') AND
> (Password='' or '1'='1')"
>
> Den vil altid returnere noget, og derved vil jeg få adgang.
>
> Endnu værre så kan man ved nogle databaser (MSSQL mener jeg) gøre
> følgende
> Brugernavn: "' or '1'='1';drop table brugere"
>
> Idet nogle databaser opfatter ";" som en kommando separator, og der er
> derfor TO kommandoer der skal udføres.
>
> Den sikre måde at sikre imod denne form for angreb som kaldes SQL
> Injection er at bruge parametre:
>
> ** UTESTET **
>
> Set Cmd = Server.CreateObject("ADODB.Command")
> Cmd.ActiveConnection = DB ' Aktiv connection
> Cmd.CommandText = "SELECT * FROM Brugere " & _
> "WHERE Brugernavn=@navn AND " & _
> "Kodeord=@Pwd"
> Cmd.Parameters.add(Cmd.CreateParameter("@navn", navn))
> Cmd.Parameters.add(Cmd.CreateParameter("@Pwd", kodeord))
> RecordSet = Cmd.Execute
>
> Jeg har ikke testet den ovenstående kode, men den burde give dig en ide
> om hvordan man kan gøre.
>
> --
> Thomas Due
> Software Developer
> Scanvaegt Nordic A/S
> Posted with XanaNews version 1.15.7.4



Thomas Due (13-11-2003)
Kommentar
Fra : Thomas Due


Dato : 13-11-03 08:26

Gunnar S. Müller[ingu33@hotmail.com] wrote in
[<3fb145fb$0$29304$edfadb0f@dread15.news.tele.dk>]:

> Hrm - Indrømmet, det er lidt omstændigt, men fidusen er at gemme
> passwords i en "oversat" form - og sæt nu en eller anden fik fat i
> tabellen med usere og passwords??? (Der er stadig mange folk der
> bruger det samme password til alle mulige ting, ikke "bare" din
> hjemmeside !)

Det er så næste punkt. Man bør stadigvæk sikre sig imod SQL-injection,
og det kan gøre på bl.a. den måde jeg beskriver. Man skal selvsagt også
kryptere sine passwords. Det mener jeg i øvrigt er en selvfølge, men
det er nok bare mig ;)

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S
Posted with XanaNews version 1.15.7.4

Lars Hoffmann (13-11-2003)
Kommentar
Fra : Lars Hoffmann


Dato : 13-11-03 09:21

"Thomas Due" <tdue@mail_remove_.dk> escribió en el mensaje
news:bovbm6$567$1@sunsite.dk...

> Det er så næste punkt. Man bør stadigvæk sikre sig imod
SQL-injection,
> og det kan gøre på bl.a. den måde jeg beskriver. Man skal selvsagt
også
> kryptere sine passwords. Det mener jeg i øvrigt er en selvfølge,
men
> det er nok bare mig ;)

Hernede i Spanien er det et lovkrav at databaser indeholdende
passwords skal gemmes i et ikke lñseligt format.
Med venlig hilsen
Lars Hoffmann



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