Avatar billede simsevu Juniormester
19. september 2006 - 10:27 Der er 5 kommentarer og
1 løsning

Mysql Injections

Hej, jeg har fået at vide jeg skal kigge på noget mysql injections til mit login script, får at det bliver sikkert nok.
Er der nogen der ved hvor man kan finde nogle artikler om dette, eller evt nogle der har viden og mod på selv at skrive en artikel om det.
Avatar billede fangel Nybegynder
19. september 2006 - 11:13 #1
Helt basalt så går det på hvis man koder som dette:

$sql = "SELECT * FROM users WHERE username = '" . $_POST['username'] . "' AND password = '" . $_POST['password'] . "'";

Den vil virke - men forestil dig at du modtager følgende data:

username: admin
password: ligemeget' OR '1'='1

Hvilket vil give dig en SQL streng som denne

SELECT * FROM users WHERE username = 'admin' AND password = 'ligemeget' OR '1'='1'

Og da 1 == 1, så vil du modtage bruger-rækken for brugeren "admin".

--

Et andet eksempel

username: admin
password: ligemeget'; DROP TABLE 'din_database

Hvilket vil give SQL-strengen

SELECT * FROM users WHERE username = 'admin' AND password = 'ligemeget'; DROP TABLE 'din_database'

Den er heller ikke heldig, da du nu vil stå uden din database (såfremt din bruger har adgang til at slette din database, hvilket den ikke burde have)

---

Det er derfor vigtigt at escape data før de bliver sat ind i en SQL-streng... eg

$sql = "SELECT * FROM users WHERE username = '" . mysql_real_escape($_POST['username']) . "' AND password = '" . mysql_real_escape($_POST['password']) . "'";

Fordi så vil evt. '-tegn og andet "skadeligt" blive escapet så de ikke længere er farlige..

PS, funktionen hedder 90% sikkert ikke mysql_real_escape - kan aldrig huske hvad den hedder, slå den op.

-fangel
Avatar billede simsevu Juniormester
19. september 2006 - 11:22 #2
har fundet en der hedder mysql_real_escape_string?
har gjort sådan her så
$user = mysql_real_escape_string($_REQUEST["user"]);
$password = mysql_real_escape_string($_REQUEST["password"]);

selct * from blabla where user = '$user' AND password = '$password'

vil det virke?
Avatar billede coderdk Praktikant
19. september 2006 - 12:03 #3
Det er fint, ja :)
Avatar billede simsevu Juniormester
19. september 2006 - 12:48 #4
Ok THX fangel svar så du kan få point
Avatar billede fangel Nybegynder
19. september 2006 - 12:58 #5
okay da.. ;)
Avatar billede fangel Nybegynder
19. september 2006 - 12:58 #6
crist, slow day today.. igen...
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