Avatar billede dazzy Nybegynder
02. maj 2010 - 14:00 Der er 13 kommentarer og
1 løsning

Sikkerhed i php

Hej derude

Jeg har et brugersystem, her logger jeg ind og gemmer login oplysningerne i en session, så kan jeg teste om brugeren er logget ind.

Læste et sted at session ikke var vejen frem, men kunne ikke finde ud af hvad jeg så skal gøre.

Så spørgsmålet er, er der en bedre måde? og hvad er vigtigt at huske når man laver et brugersystem?
Har læst om mysql_real_escape_string, og har også brugt det, men der må være mange flere ting der skal tjekkes om.
Har også valideret input felterne, men er ikke sikker på om jeg har alt med der, så måske nogle fif til hvad jeg skal huske at have med.

Og til sidst andre fif til hvad man skal huske til generel php sikkerhed.

På forhånd tak
Hilsen Simon
Avatar billede repox Seniormester
02. maj 2010 - 14:29 #1
Det er umuligt at vurdere om din kode er sikker eller ej uden at have noget kode at vurdere det ud fra.

Hvad er din kilde for at 'sessions ikke er vejen frem'?
Avatar billede dazzy Nybegynder
02. maj 2010 - 14:36 #2
Læste et indlæg her på eksperten, der synes at session var et mærkeligt valg da det ikke var sikkert.

Kode:

<?php session_start();
if(!$_SESSION['loget_in'] == 1) {//Hvis brugeren ikke er logget in
?><body background="bg.gif">

<meta http-equiv="refresh" content="1;url=logind.php"><?
exit}
?>

Og bruger så sessionen til at se brugernavn fx:

<input type="hidden" name="forfatter" value="$_SESSION['navn']>
Avatar billede Slettet bruger
02. maj 2010 - 14:42 #3
Du kan læse lidt om de mest almindelige "huller":
http://www.computerworld.dk/art/55943?cid=2&q=Digital_sikkerhed&a=cid&i=2&o=8&pos=9

Og meget mere hvis du følger linket til owasp:
http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

Det er dér de siger at sessions ikke er specielt sikre - da de bygger på en statisk cookie, som sendes med i headeren ved alle forespørgsler (i samme session).

De anbefaler en frisk "challenge token" for hver action - kort fortalt.
Avatar billede repox Seniormester
02. maj 2010 - 14:45 #4
Må jeg gætte på at dit loginscript er noget du har udviklet ud fra denne guide?
http://www.udvikleren.dk/PHP/Article.aspx/87/

I så fald synes jeg bare du skal vide at artiklen er 7 år gammel og udviklingen indenfor PHP har været stor siden da (læs: det er noget forældet lort og koden er virkelig dårligt skrevet).

Sessions er i øvrigt sikre nok - men de er nemme at omgås forkert.
Artiklen jeg henviser til er et klassisk eksempel på hvordan man omgås sessions forkert.
Avatar billede dazzy Nybegynder
02. maj 2010 - 14:50 #5
Kan godt være jeg har set dette på denne side, men tror også andre steder.

Har du link itl steder sessions omgås rigtig ?
Eller nogle fif til hvordan jeg kan gøre dette?

T4NK3R

Vil prøve at kigge på dette.
Avatar billede repox Seniormester
02. maj 2010 - 15:01 #6
Et par google søgninger gav mig dette som det bedste bud:
http://phpsense.com/php/php-login-script.html

Jeg har en nogenlunde struktur med nogle få tilføjelser.
Du kan downloade og kigge på det jeg har lavet her:
http://catalystcode.net/
Avatar billede dazzy Nybegynder
02. maj 2010 - 15:07 #7
jo tak vil lige kigge på nogle af disse ting,
lig et svar begge to, giver dog flest point til repox der gav mest hælp
Avatar billede Slettet bruger
02. maj 2010 - 15:10 #8
Jeg skal nok lige tilføje, at det ikke er sessions i sig selv der udgører en risiko.
- Men NÅR det er lykkedes en hacker at injecte noget script på en webside, gør den statiske cookie det meget lettere for den onde kode at komme videre (udføre server-handlinger med brugerens credentials)
Avatar billede dazzy Nybegynder
02. maj 2010 - 15:12 #9
Hvordan undgås dette ??

ved at validere ens text felter og sådan eller hvad ?
Avatar billede Slettet bruger
02. maj 2010 - 15:15 #10
Giv dem bare til repox - måske kan vi være heldige at han armerer sit login-system med "challenge tokens" : )

Artiklen jeg læste det i er her:
http://www.owasp.org/index.php?title=Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&setlang=es
Avatar billede Slettet bruger
02. maj 2010 - 15:17 #11
> #9 - Ja!

Ved at vaske alle bruger-inputs grundigt - men det er ikke let, hvis det samtidig skal være brugbart/fleksibelt/sexet/sjovt (hele 4 ting!)
Avatar billede dazzy Nybegynder
02. maj 2010 - 15:18 #12
Ja det korrekt, men man er vel nød til at prøve!
Avatar billede repox Seniormester
02. maj 2010 - 15:27 #13
#10
Jeg prøver lige at gennemgå den artikel du henviste til - tak for input ;) Jeg deler gerne pointene omend ikke :)

#7
Her er mit svar ihvertfald.
Avatar billede dkfire Nybegynder
02. maj 2010 - 20:55 #14
Hvis jeg må komme med en kommentar til #9, så
- Stol ALDRIG på din bruger, valider alt hvad de kan sende til dig, om det kommer fra en form eller en url streng.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester