Avatar billede mikze Nybegynder
07. januar 2004 - 17:30 Der er 12 kommentarer og
2 løsninger

Hackning i brugersystem i PHP ?

Er det rigtigt at dette system: http://www.phpfreaks.com/tutorials/40/0.php

Kan hackes meget nemt og det er en stor åben indgang for hackere ? Min ven www.madsass.dk siger det... Så jeg ved ikke rigtig om jeg tør bruge systemmet ..

Jeg håber nogle af jer ved det eller kan finde ud af det.
Avatar billede stingbat Nybegynder
07. januar 2004 - 17:39 #1
Vil nu give ham ret i, at der er visse sikkerhedshuller. Især under indsættelse/oprettelse af bruger i databasen - hvor oplysningerne ikke bliver "valideret" (escaped)... Så der vil kunne ske en del skade.
Kan dog løses vha. mysql_escape_string-funktionen (se evt. http://www.php.net/manual/en/function.mysql-escape-string.php )

Om loginen lider af samme fejl, er lidt forskelligt - alt efter hvilken opsætning der er sat i php.ini
Avatar billede mikze Nybegynder
07. januar 2004 - 17:47 #2
Jeg forstår det ikke helt men er det så muligt at rette hullerne ? Jeg bruger web10 foresten hvis i skal bruge det med sikkerheden.
Avatar billede stingbat Nybegynder
07. januar 2004 - 17:50 #3
Du kan sagtens rette hullerne...

Som skrevet før, kan du der hvor der står '$email_address' osv (der hvor du har SQL-strenge/database-kald), ændre det til:
'" . mysql_escape_string($email_address) . "'

Derved sikres der for at ' og lign. tegn bliver escaped :-)

Håber at du kan følge mig (?!)
Avatar billede jinxit Nybegynder
07. januar 2004 - 17:50 #4
Sålænge magic_quotes_gpc er aktiveret kan jeg ikke se nogle problemer med systemet.
Avatar billede jinxit Nybegynder
07. januar 2004 - 17:51 #5
Systemet undgår alle de klassiske fejl ved login systemer...

Såsom at gemme password i klar tekst, gemme login oplysninger i cookies mv.
Avatar billede stingbat Nybegynder
07. januar 2004 - 17:59 #6
Selvfølgelig kan man bruge den nemme metode - men det lærer man jo IKKE af ;-)
Så når man pludseligt smider sin kode op hvor der ikke er magic_quotes_gpc, ja, så er helvedet løs...

Men hvis du kiggede på den kode som der står ovenfor, bliver slashes'ne fjernet - og derefter indsat i db'en - ergo fejl.
Avatar billede mikze Nybegynder
07. januar 2004 - 18:35 #7
Det vil altså sige at hvert sted i ALLE filerne hvor at der står $email_adress skal jeg ændre det til: mysql_escape_string($email_address) ?

Men hvad er det der : "' . du skriver ?
Avatar billede stingbat Nybegynder
07. januar 2004 - 18:43 #8
Ikke kun $email_address, men også de andre variabler (altså $first_name, $last_name, $username, $info).

Umildbart er det vidst kun register.php-scriptet (side 4) som har en bug - men ellers prøv at indtaste ' i ét af felterne, og se om den fejler.
Avatar billede stingbat Nybegynder
07. januar 2004 - 18:46 #9
Forresten - det jeg skrev ang. '", var at ' og dernæst " ... og modvendt i den anden ende ... resultat:
email_address='" . mysql_escape_string($email_address) . "'

samt ved indsættelse:
, '" . mysql_escape_string($email_address) . "',

Altså i de SQL/tekststrenge der er i scriptet, hvor førnævnte variabler benyttes
Avatar billede mikze Nybegynder
07. januar 2004 - 19:16 #10
ok danke det vil jeg lige prøve så :)
Avatar billede mikze Nybegynder
07. januar 2004 - 20:11 #11
string bat skal det være vil ALLE variabler også activated ?
Avatar billede mikze Nybegynder
07. januar 2004 - 20:16 #12
Forstår det virkeligt ikke helt :S

Altså sådan som jeg har opfattet det.. Så skal jeg skrive det der halløj med alle oplysninger som brugeren kan rette altså som brugernavn mm.

Men ikke sådan noget som sidste login og opret dato og level og alt det der.

Men alligevel..
Hvordan skal jeg indsætte de der ting du har ?

Kan du ikke lave en simpel query ?
Avatar billede stingbat Nybegynder
07. januar 2004 - 20:47 #13
Er også primært de steder hvor der er brugerinput - eftersom disse kan ændres og "misbruges" (hvis der er et "hul").

Den nemmeste måde at checke en evt. fejl, er at indsætte en ' i et af felterne - hvis kaldet "fejler", så vil det også samtidig betyde en nem måde at snyde og skrive "ondsindet" kode.

For lige at vise, i forhold til side 4, så skal linien:
$sql_email_check = mysql_query("SELECT email_address FROM users
            WHERE email_address='$email_address'");

ændres til:
$sql_email_check = mysql_query("SELECT email_address FROM users
            WHERE email_address='" . mysql_escape_string($email_address) . "'");

Ligeledes skal linien:
$sql = mysql_query("INSERT INTO users (first_name, last_name,
        email_address, username, password, info, signup_date)
        VALUES('$first_name', '$last_name', '$email_address',
        '$username', '$db_password', '$info2', now())")
        or die (mysql_error());

ændres til:
$sql = mysql_query("INSERT INTO users (first_name, last_name,
        email_address, username, password, info, signup_date)
        VALUES('" . mysql_escape_string($first_name) . "', '" . mysql_escape_string($last_name) . "', '" . mysql_escape_string($email_address) . "',
        '" . mysql_escape_string($username) . "', '$db_password', '" . mysql_escape_string($info2) . "', now())")
        or die (mysql_error());

Håber at du kan følge mig...

Grunden til at man skal huske det, er når enten magic_quotes_gpc ikke bliver benyttet, eller at den benyttes men at man så har brugt stripslashes (som bruges til fejl-beskrivelser og mailen-udsendingen senere i scriptet - derved er dataerne ikke sikker i database-form - hvilket det bliver, vha. mysql_escape_string :-)

Håber at det hjalp lidt
Avatar billede stingbat Nybegynder
16. januar 2004 - 22:30 #14
Fandt du ud af mere?
For ellers skal du lige huske at lukke spørgsmålet... :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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