tjek min kode.

Tags:    php

<< < 12 > >>
Hej alle sammen, jeg er igang med at teste mine skills indenfor php :)
Så jeg laver en masse scripts og ser hvor gode de bliver :)
Jeg har lavet et login script men er usikker på sikkerheden i det. Jeg har læst mange tutorials om login scripts. så hvis i ser noget som ligner noget i har set før, er det nok der jeg har det fra. (har ikke copy pastet noget, læst for lang tid siden og lavet nu :D) så vær venlig ikke at kopiere mit script. (har fjernet noget i det, fordi der er lidt sikkerhed i det, men vil ikke have alle skal kunne se min "fejl" som er der. :D
--------------------------------------
checklogin.php
Fold kodeboks ind/udKode 

------------------------
Add user.
Fold kodeboks ind/udKode 



er der noget som i kan se ***OMG SIKKERHEDS FEJL** ? :D giver kun 20 point, fordi i er så hardcore så i kan se fejl hurtigt, og det er et lille script :)

EDIT: kan man få SSL sikkerhed på login og brugeropret? for senere skal der et betalings system (slags netbank) på siden som kræver sikkerhed :D




Indlæg senest redigeret d. 26.07.2007 02:13 af Bruger #11875
16 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej alle sammen, jeg er igang med at teste mine skills indenfor php :)
Så jeg laver en masse scripts og ser hvor gode de bliver :)
Jeg har lavet et login script men er usikker på sikkerheden i det. Jeg har læst mange tutorials om login scripts. så hvis i ser noget som ligner noget i har set før, er det nok der jeg har det fra. (har ikke copy pastet noget, læst for lang tid siden og lavet nu :D) så vær venlig ikke at kopiere mit script. (har fjernet noget i det, fordi der er lidt sikkerhed i det, men vil ikke have alle skal kunne se min "fejl" som er der. :D
--------------------------------------
checklogin.php
Fold kodeboks ind/udKode 

------------------------
Add user.
Fold kodeboks ind/udKode 



er der noget som i kan se ***OMG SIKKERHEDS FEJL** ? :D giver kun 20 point, fordi i er så hardcore så i kan se fejl hurtigt, og det er et lille script :)

EDIT: kan man få SSL sikkerhed på login og brugeropret? for senere skal der et betalings system (slags netbank) på siden som kræver sikkerhed :D


Det eneste rigtige "sikkerhedsproblem" jeg kan se er, at du tilsyneladende gemme folks password i klar tekst i databasen. Jeg ville nok lave en envejs-kryptering af dem med sha1().
Når du opretter en bruger, gemmer du så SHA1-hash værdien i stedet for deres rigtige kodeord. På den måde vil man ikke kunne se deres kodeord i databasen. Du skal naturligvis huske at lave en SHA1-hash af deres kodeord når de prøver at logge ind :)

Desuden er det en anelse overflødigt med dine:
$var = $_GET['var']
men det er vel en vanesag :)





Samme som JT siger, tag at kryptere de passwords.
Og så vil jeg lige høre hvorfor du gemmer brugerens password i en session?

Et alternativ ville være at tjekke op på brugerens information, derefter kunne man så lave en random-tekststreng på 10 eller 15 cifre, som man så gemmer i en cookie/session og skriver i databasen.
På den måde vil ingen sårbar information blive lagt ud og "flyve" i sessions.

Så laver man blot et tjek om brugeren stadig er aktiv på siden, og hvis ikke, så slettes random-strengen fra databasen igen. :)

Har selv lavet et lignende system på et tidspunkt, og det fungere rigtig godt..



Hej Kim,

Det er stadig mere sikkert at bruge mysql_real_escape_string() istedet for addslashes, desuden er det sjældent smart at lave en SELECT * FROM query :) Du har glemt og køre en SHA1() på password i add_user.php

Din måde at kontrollere om en værdi er sat eller valid er ikke helt optimalt. Prøv evt. at gøre noget lignende dette
Fold kodeboks ind/udKode 






ang SSL så kan du få det på alle sider, det koster dog at få et SSL certifikat



Hvad koster sådan et certifikat og hvor kan man få det?



OMG! det jo dyrt! (fandt det)
skal finde en ny løsning o_0!



JT > sha1() Det gør jeg når det er næsten færdigt. :) (EDIT: nah, har gjordt det nu :D så et password bliver til "7110eda4d09e062aa5e4a390b0a572ac0d2c0220" :))

Bjørn Sørensen > JEg ed ikke rigtigt hvorfor, kan sku ikke huske hvorfor jeg gjorde det... der var en mening med det :D (EDIT: har fjernet så den ikke gemmer password mere )
men kan du lave et eksempel af det du siger for kan ikke rigtig se hvordan man kan lave det..


Tak for svarene begge to :)



Indlæg senest redigeret d. 26.07.2007 12:27 af Bruger #11875
Din kode er fuldkommen åben for SQL injections, hvis magic_quotes_gpc er slået fra(Og det bør den være i enhver produktions-opsætning). Du skal enten escape det som du smider ind i databasen(Se: mysql_real_escape_string), eller bruge mysqli prepared statements.

Personligt mener jeg at den sidste af de to er klart den bedste, men den kræver PHP5.



Jeg har lige opdateret min kode. nu ser den sådan ud.
Checklogin.php
Fold kodeboks ind/udKode 


add_user.php
Fold kodeboks ind/udKode 

The-Freak > kan du vise noget som vill forhindre sql injections? (code) bare en lille ting. for synes det er svært at se hvor det skal bruger og ikke skal bruges :)

EDIT: Jeg tilføjede Addslashes i min kode for læste i en tut t man kunne bruge det mod sql injections (passer det?)



Indlæg senest redigeret d. 26.07.2007 13:27 af Bruger #11875
Ja, addslashes kan bruges til beskyttelse med SQL injections, og du har tilføjet dem det rigtige sted. Men der er flere karaktere, og for at få kål på dem bliver du nød til at bruge mysql_real_escape_string fremfor addslashes.

Med addslashes bør du også først tjekke om magic_qoutes_gpc er slået til eller ej. Det kan du gøre med get_magic_quotes_gpc funktionen.

Et eksempel kunne være:
Fold kodeboks ind/udKode 

På den måde kan du sørge for at der ikke bliver tilføjet slashes to gange, da magic_quote_gpc automatisk gør det ved alt input du får fra en bruger(Get, Post, Cookie = gpc :))



Indlæg senest redigeret d. 26.07.2007 13:36 af Bruger #2330
<< < 12 > >>
t