Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?

[es] :: PHP :: PHP za početnike :: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?

[ Pregleda: 5027 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?12.04.2010. u 14:35 - pre 170 meseci
Pozdrav,

napravijo sam skriptu za registraciju i login, e sad me zanima kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi? I de ako može neko od vas ko se razumije u to dobro da isproba adresa gdje je skripta uplodana je hxxp://www.proba.bh-forum.com pa napišite ovdje možel se desiti injection. Hvala na pomoći.


Code:
<?php

$korisnickoime=$_POST['korisnickoime'];
$email=$_POST['email'];

$provjera_korisnickoime=mysql_query("SELECT * FROM korisnici 
        WHERE korisnickoime='$korisnickoime'") or die('Nije izvršena provjera u bazi!'); 
$provjera_emaila=mysql_query("SELECT * FROM korisnici 
        WHERE email='$email'")or die('Nije izvršena provjera u bazi!');

if(preg_match('/[-!#$%&\'*+\\.\/=?^`{|}~]/',$korisnickoime)){
    echo 'Upišite validno korisniÄŤko ime (samo slova, brojevi i _crte)!';
}else{
        $upisuje_u_bazu="INSERT INTO korisnici(korisnickoime, email)VALUES('$korisnickoime', '$email')";
}
?>


nisam nigdje stavljo zaštitu za injection, al sam zato stavljo u e mailu i korisnicko ime zabrane unošenja npr. crtica, tačaka, navodnika, itd.


[Ovu poruku je menjao Goran Rakić dana 13.04.2010. u 16:24 GMT+1]
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
*.mbb.telenor.rs.



+303 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 15:39 - pre 170 meseci
Citat:
nisam nigdje stavljo zaštitu za injection, al sam zato stavljo u e mailu i korisnicko ime zabrane unošenja npr. crtica, tačaka, navodnika, itd.

[/quote]
Kupijo sam automobil bez tockova, da li ce moci da se krece? Moze li neko da proveri da li stvarno nema tockove, ili su se nekako magicno pojavili?
Mrzi me da proveravam ceo kod bez potrebe evo ti samo primer jednog mesta gde je moguc mysql injection:
Code:

$provjera_korisnickoime=mysql_query("SELECT * FROM korisnici 
WHERE korisnickoime='$korisnickoime'") or die('Nije izvršena provjera u bazi!'); 
$provjera_emaila=mysql_query("SELECT * FROM korisnici 
WHERE email='$email'") or die('Nije izvršena provjera u bazi!');


[Ovu poruku je menjao Goran Rakić dana 13.04.2010. u 16:21 GMT+1]
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 16:06 - pre 170 meseci
Tebe ovde spašava magic_quotes funkcionalnost PHP-a, a tvoj kod je nesigurno napisan.

Zaštita sa magic_quotes se može zaobići kroz slanje podataka u različitim kodnim stranama ili neispravnim višebajtnim sekvencama, ili onemogućiti nepažljivom promenom postavki servera.

Daleko je sigurnije onemogućiti magic_quotes, a odraditi mysql_real_escape_string() nad promenljivama koje su deo upita.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 16:09 - pre 170 meseci
magic quotes je po default ugasen vec neko vreme ako se dobro secam i nikako se ne preporucuje posto su za multibyte karaktere "nesigurni"

elem, "po meni" ovo treba da prenesete na neki php forum posto ovo od prvog posta nema nikakve veze sa mysql-om
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 16:17 - pre 170 meseci
e jbiga kako god uradim neku skriptu uvjek neko kaze nevalja, nesigurno itd, šta sad trebam uraditi u ovom kodu kad bi stavio zaštitu za injection bil onda bilo sigurno, a ja mislim da se nemože napraviti injection zbog toga što sam stavio

Code:
if(preg_match('/[-!#$%&\'*+\\.\/=?^`{|}~]/',$korisnickoime))


i sad kad neko htjedne da unese npr. u formu gdje je korisnicko ime 'or''=''or' izbacit ce mu grešku da se nemogu unositi navodnici i crtice itd.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 16:24 - pre 170 meseci
black, moze .. taj preg te nece spasiti posebno sto nije multibyte ...

elem ...

da bi ovo imalo bar malo veze sa mysql-om ..

1. SVAKI ulaz, pocistis sa mysql_real_escape_string (i to obavezno ovaj REAL ) i to proveris da li je upaljen magic, odradis unescape pa onda odradis mysql real escape...
2. koristi svuda multibyte string operacije
3. ako vec pises app ispocetka batali mysql_* funkcije, stare su ko biblija, imaju gomilu "problema" etc etc ... koristi mysqli
4. koji god interface prema mysql-u da koristis obavezno setuj pravilno karakter enkoding konekcije
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 17:08 - pre 170 meseci
evo sad sam ovo vako postavio

Code:
$korisnickoime=stripslashes($_POST['korisnickoime']);
$korisnickoime=mysql_real_escape_string($korisnickoime);

$email=stripslashes($_POST['email']);
$email=mysql_real_escape_string($email);


Jel trebam ovo sve što ima ikakve veze sa mysql bazom postaviti kao email i korisnicko ime?
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 17:09 - pre 170 meseci
BLACK_SWORD, napomena u vezi sql ubrizgavanja pojavila se u jednoj od tvojih prethodnih tema i tu ti je ukazano na link koji tu temu obrađuje sa sve primerima i rešenjem.

Milos911 ti je naveo primer gde čak ni ta regexp provera nije urađena, Bogdan ti je napisao da ni za kasniji upit regexp neće biti dovoljan iako će onemogućiti neke tipove napada.

edit: Savet je da mysql_real_escape_string() ne radiš tu, već u niski kada sastavljaš upite. Na taj način ćeš biti siguran da sve prođe kroz sito. Ove funkcije možeš da pozoveš tek nakon uspostavljene veze sa bazom. Isto to moraš da uradiš i na stranici za prijavu, dakle u svakom MySQL upitu. Ako je magic_quotes uključen, zanimaće te da skloniš automatski ubačene obrnute kose crte, kao što ti je Bogdan napisao i kao što piše u PHP dokumentaciji.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: Kako mogu da isprobam moželi se desiti SQL injection, sta da upišem u formi?12.04.2010. u 17:30 - pre 170 meseci
A ja mislim da smo baš skoro na PHP forumu detaljno diskutovali na temu SQL injection-a i načinima za zaštitu od istog, tako da ne znam zašto se opet diže "prašina" o tome. A između ostalog, spominjali smo i to, u PHP-u odavno deprecated podešavanje, zvano magic_quotes, kao i načinima za onesposobljavanje njegovog delovanja. Ostavio bih linkove do tih tema, al' stvarno me mrzi da ih sad tražim...

btw Ne vidim zašto je ova tema u MySQL forumu, SQL Injection se realizuje zahvaljujući propustima u backend (domain) logici, MySQL baza mu tu dođe kao meta samog napada.
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?14.04.2010. u 12:19 - pre 170 meseci
dali je vako dobro zaštitit skriptu od injectiona?

Code:

//Za zaštitu od mysql injection.
if(get_magic_quotes_gpc()){
$korisnickoime_za_provjeru=stripslashes($_POST['korisnickoime']);
}
$korisnickoime_za_provjeru=mysql_real_escape_string($korisnickoime_za_provjeru);

//Provjera da li je korisničko ime u upotrebi.
$provjera_korisnickoime=mysql_query("SELECT korisnickoime FROM korisnici 
        WHERE korisnickoime='$korisnickoime_za_provjeru'") or die('Nije izvršena provjera u bazi!');
$provjereno_korisnickoime=mysql_num_rows($provjera_korisnickoime);


korisničko ime mi u bazu se sprema kao `korisnickoime` varchar(30) NOT NULL,

i dali trebam staviti uzvičnik u funkciji

if(!get_magic_quotes_gpc()){


ili bez uzvičnika


if(get_magic_quotes_gpc()){

i možeteli mi objasniti za sto sluzi ovaj uzvičnik "!" u PHP

[Ovu poruku je menjao Goran Rakić dana 14.04.2010. u 13:30 GMT+1]
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?14.04.2010. u 12:31 - pre 170 meseci
Logički operatori: http://php.net/manual/en/language.operators.logical.php
Opis funkcije: http://php.net/manual/en/function.get-magic-quotes-gpc.php

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?14.04.2010. u 21:35 - pre 170 meseci
e vako, podaci koji se spremaju u mysql bazu tipa varchar to jest. korisnicko ime, email, itd. eskejpujem ih vako:

Code:
//Za zaštitu od mysql injection.
if(get_magic_quotes_gpc()){ 
$korisnickoime=stripslashes($_POST['korisnickoime']);
$email=stripslashes($_POST['email']);
}
$korisnickoime=mysql_real_escape_string($korisnickoime);
$email=mysql_real_escape_string($email);

//Upisivanje u bazu.
$upisuje_u_bazu="INSERT INTO korisnici(korisnickoime, email)VALUES('$korisnickoime', '$email')";


šta mislite dali je to dobro?

I zanima me dali trebam eskejpovat i podatke koji su tipa u mysql bazi enum?

npr. gdje korisnik pri registraciji odabire spol, tu može samo odabrati "m" i "z" i dali će moći haker tu na tim da napravi injection ako ne ekejpujem?

Hvala na odgovoru!
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?14.04.2010. u 22:00 - pre 170 meseci
Citat:
BLACK_SWORD

I zanima me dali trebam eskejpovat i podatke koji su tipa u mysql bazi enum?
npr. gdje korisnik pri registraciji odabire spol, tu može samo odabrati "m" i "z" i dali će moći haker tu na tim da napravi injection ako ne ekejpujem?



Nisi ti uopšte razumeo šta je sql ubrizgavanje i gde tu tačno nastaje problem.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

BLACK_SWORD

Član broj: 212173
Poruke: 171
*.team.ba.

Sajt: www.artwebdizajn.com


+3 Profil

icon Re: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?15.04.2010. u 21:58 - pre 170 meseci
e vako:

u skriptu za registraciju sam stavio da kad se korisnik registruje da se njegova ip adresa spremi u bazu, e sad me zanima dali trebam eskejpovat i ip adresu?

vako sam stavio upis u bazu
Code:
$upisuje_u_bazu="INSERT INTO korisnici(korisnickoime, lozinka, email, spol, datum, ip_korisnika, aktivacija)VALUES
('$korisnickoime', '$lozinka', '$email', '$spol', 'Y-m-d H:i:s', '".$_SERVER['REMOTE_ADDR']."', '$aktivacija')";


a ovo sam eskejpovo:

Code:
//Za zaštitu od mysql injection.
if(get_magic_quotes_gpc()){ 
$korisnickoime=stripslashes($_POST['korisnickoime']);
$email=stripslashes($_POST['email']);
$spol=stripslashes($_POST['spol']);
}
$korisnickoime=mysql_real_escape_string($korisnickoime);
$email=mysql_real_escape_string($email);
$spol=mysql_real_escape_string($spol);


e sad me samo zanima sta da uradim sa ip adresom, ja mislim da je nemoram eskejpovat, al opet nisam siguran, pa bi vas molio da mi kažete.

Hvala na odgovoru!
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Kako mogu da isprobam može li se desiti SQL injection, sta da upišem u formi?

[ Pregleda: 5027 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.