27. marts 2003 - 19:58Der er
11 kommentarer og 1 løsning
Sikkerhed
Jeg skal lave en simpel hjemmeside, hvor en bruger logger ind og derefter skal vedkommende kunne indsætte i en database, ændre og slette data.
Mit problem er at jeg ikke er sikker på hvordan jeg laver den bedste form for sikkerhed omkring dette.
Forslag 1: Efter brugeren har indtastet user og pass, tjekker jeg om det er sandt i databasen. Er det det, opretter jeg en session-variabel, men et navn og en værdi (en streng). Hver gang brugeren så skal lave noget i databasen, kan jeg først tjekke om den session-variabel er rigtig sat og om værdien er rigtig. Det er bare ikke 100% sikker, fordi at man kunne lave en session variabel med sit eget script med det samme navn som jeg gav min. Men jeg ved ikke om session-variable bliver lavet på serveren eller client. Hvis det er på server er der vel ikke noget problem idenne løsning.
Foreslag 2: Efter en bruger logger ind gemmer jeg hans user og pass i 2 session-variable. Hver gang brugeren så skal lave noget i databasen, går jeg ind i databasen og tjekker hvorvidt user og pass er rigtig før det sker nogle ændringer.
Det kan være det bør laves på en helt tredje måde, for det er sikkert. Men jeg håber I forstår hvad jeg ønsker.
men lidt kommentare... 1) session variabler er server-side... (alt ved PHP/ASP/JSP er faktisk serverside) derfor vil man ikke kunne lavet et script der ændre indholdet af disse...
2) jeg bruger selv den model i mine projekter... (altså tjekker user/paswd mod databasen HVER gang der skiftes side...)
I mine tidligere projekter har jeg lavet det som forslag1. Hvad skulle fordelen/sikkerheden være ved forslag2 istedet? Som du selv siger, ligger sessionvariablen på serveren og derfor kan en bruger/hacker ikke ændre dem alligevel!
jo, men jeg forstår egentlig stadig ikke hvor forskellen skulle ligge. Om du tjekker én gang til at starte med, eller om du tjekker hver gang, hvad skulle forskellen være?
en person kunne have hacket sig ind og ændret indholdet... det er af samme grund at man kryptere kodeord i databasen, selvom man også skal have kodeord for at se indholdet af databasen... ;)
der er ikke noget rigigt argument, andet end at det vil øge sikkerheden en lille bitte smule, da en evt (h/c)acker både skal hacke server variabler og database poster...
desuden vil det være nemt at fx kick'e en bruger, hvis man nogen side får brug for dette... (slet posten i databasen, næste gang han loader en side, så er det go'nat ... ;)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.