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.
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
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 :-)
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.
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
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());
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 :-)
Fandt du ud af mere? For ellers skal du lige huske at lukke spørgsmålet... :-)
Synes godt om
Ny brugerNybegynder
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.