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

koliko je ovo bezbedno?

[es] :: PHP :: koliko je ovo bezbedno?

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon koliko je ovo bezbedno?11.07.2008. u 20:30 - pre 192 meseci
koliko je ovako nesto bezbedno po pitanju mysql injectiona ?

Code:

$check = mysql_query("SELECT * FROM korisnici WHERE username = '".$_POST['username']."'")or die(mysql_error());

//greska ako korisnik ne postoji
$check2 = mysql_num_rows($check);
if ($check2 == 0) {
die('Taj korisnik ne postoji u nasoj bazi.<a href=registracija.php>Kliknite ovde da biste se registrovali</a>');
}
while($info = mysql_fetch_array( $check ))
{
$_POST['pass'] = stripslashes($_POST['pass']);
$info['password'] = stripslashes($info['password']);

//ako je losa lozinka...
if ($_POST['pass'] != $info['password']) {
die('Pogesna lozinka. Pokusajte opet.');
}


ako ne valja, kako da sredim?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.197.*

Sajt: https://avramovic.info


+46 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 21:03 - pre 192 meseci
Kod ti nije dobar, a kako da ga središ? Tako što ćeš da ispraviš greške u kodiranju (kontrolisanjem podataka koje unose korisnici, "eskejpovanjem" promenljivih). Već je bilo reči o MySQL injectionu na ovom forumu, pretraži forum pa ćeš naći objašnjenja.

1. http://www.elitesecurity.org/t235672-Sigurnost-phpa-mysql
2. http://www.elitesecurity.org/t...ySQL-provjeri-ulaznih-podataka
3. http://www.elitesecurity.org/t...on-ili-SQL-injection-sta-je-to
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 22:19 - pre 192 meseci
evo naleteo sam na ovu f-ju

Code:
function secure_sql($value)
{
if( get_magic_quotes_gpc() )
{
$value = stripslashes( $value );
}
//check if this function exists
if( function_exists( "mysql_real_escape_string" ) )
{
$value = mysql_real_escape_string( $value );
} else {
//for PHP version < 4.3.0 use addslashes
$value = addslashes( $value );
}
return $value;
}


ali nikako da skripta proradi sa njom :( prijavljuje gresku u sql sintaksi
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 23:01 - pre 192 meseci
Evo ja odmah da ti objasnim kako bi se napravio injection za tvoj kod :-)

Code:


$check = mysql_query("SELECT * FROM korisnici WHERE username = '".$_POST['username']."'")or die(mysql_error());


Ovo $_POST['username'] ti jke najveca greska :-) Kako ja to mogu da zloupotrebim ?

Pa lako, napravim na svom kompu formu ovakvog tipa:

Code:

<form name="blabla" method="post" action="lokacija do tvoje skripte ....">
<input type="hidden" name="username" value="a; INSERT INTO users (username,pass,type) VALUES (man-wolf, blabla, ADMIN)">
<input type="button" name="submit" value="INJECT IT!!!">


Pretpostavimo da imas tabelu users, koja ima sledeca polja:

Citat:

-----USERNAME------PASS------TYPE ( user, moderator, admin )--------


Ja bi onim gore kodom u bazu uneo novog usera (mene) koji bi bio admin :-))

Nadam se da kapiras problem :-)

A resenje je da za pocetak ne koristis u query-u $_POST, vec prvo ga prebaci u neku promenljivu, onda mu uradis: mysql_escape_string, i onda procitas linkove sto ti je nemanja dao :-) A imas i u top temi, adresu nesto Secinfo, tako nesto, pa procitaj i tu o sigurnosti MySQL upita :-)

Pozz ;-)
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 23:20 - pre 192 meseci
hvala, jasno mi je sta je injection ali me drugo buni. kad propustim promenljive kroz mysql_escape_string onda ne mogu da se logujem jer ne postojim kao korisnik. verovatno to treba i kod registracije, jel da? jer kad ehujem kveri onda mi username izgleda cini mi se \'username\' ili tako nesto. i normalno da ga nema u bazi. jel sam u pravu?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.197.*

Sajt: https://avramovic.info


+46 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 23:26 - pre 192 meseci
Čekaj, prvo da razjasnimo, da pitam za svaki slučaj: Šta puštaš kroz funkciju secure_sql()? Nikako nemoj ceo kveri da puštaš kroz funkciju već samo promenljive koje ulaze u sastav kverija
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?11.07.2008. u 23:36 - pre 192 meseci
ceo kveri :-(
ovo sto si napisao mi je palo na um bukvalno sekundu pre nego sam kliknuo da procitam post :D

hvala. a sta sa ovim sto ne mogu da se ulogujem? jel isto problem do ovoga?
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?12.07.2008. u 09:28 - pre 192 meseci
evo, sad je sredjeno. na svaku $_GET promenljivu i bilo koju koja ide od korisnika u kveri stavio sam $promenljiva=secure_sql($promenljiva). to sam uradio i za vrednosti iz kukija. Da li je sad dovoljno?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
93.86.41.*

Sajt: https://avramovic.info


+46 Profil

icon Re: koliko je ovo bezbedno?12.07.2008. u 10:09 - pre 192 meseci
$_GET, $_COOKIE, $_POST, ... sve što dolazi od korisnika
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?12.07.2008. u 10:15 - pre 192 meseci
hvala na pomoci.
 
Odgovor na temu

Alkaline
Kula

Član broj: 172901
Poruke: 28
*.dip0.t-ipconnect.de.



Profil

icon Re: koliko je ovo bezbedno?12.07.2008. u 17:18 - pre 192 meseci
Još jedan savet, koji još niko izgleda nije dao, iako je nevezano za sigurnost:

Query ti izgleda ovako:
SELECT * FROM korisnici WHERE username...

Međutim, u tvom kodu ne vidim nigde da koristiš baš sva polja, već samo polje "password".
Iz tog razloga, najbolje je da promeniš query da izgleda ovako:

SELECT password FROM korisnici WHERE username...

Time bi smanjio potrošnju resursa servera, i dobio na brzini, itd.

Naravno, ako ti treba još polja, samo ih dodaj zarezom. Na primer:

SELECT username, password FROM korisnici WHERE username...
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: koliko je ovo bezbedno?12.07.2008. u 18:08 - pre 192 meseci
da,da, hvala. nego u tabeli sa korisnicima nemam puno polja, tako da cenim da jedno gore-dole u query-ju nece mnogo da smeta :)
 
Odgovor na temu

milosijaa
Milos djordjevic
PHP Developer
srbija

Član broj: 88371
Poruke: 135
*.dynamic.sbb.rs.



Profil

icon Re: koliko je ovo bezbedno?25.07.2008. u 03:29 - pre 191 meseci
Citat:
Man-Wolf: Evo ja odmah da ti objasnim kako bi se napravio injection za tvoj kod :-)

Code:


$check = mysql_query("SELECT * FROM korisnici WHERE username = '".$_POST['username']."'")or die(mysql_error());


Ovo $_POST['username'] ti jke najveca greska :-) Kako ja to mogu da zloupotrebim ?

Pa lako, napravim na svom kompu formu ovakvog tipa:

Code:

<form name="blabla" method="post" action="lokacija do tvoje skripte ....">
<input type="hidden" name="username" value="a; INSERT INTO users (username,pass,type) VALUES (man-wolf, blabla, ADMIN)">
<input type="button" name="submit" value="INJECT IT!!!">


Pretpostavimo da imas tabelu users, koja ima sledeca polja:



Ja bi onim gore kodom u bazu uneo novog usera (mene) koji bi bio admin :-))

Nadam se da kapiras problem :-)

A resenje je da za pocetak ne koristis u query-u $_POST, vec prvo ga prebaci u neku promenljivu, onda mu uradis: mysql_escape_string, i onda procitas linkove sto ti je nemanja dao :-) A imas i u top temi, adresu nesto Secinfo, tako nesto, pa procitaj i tu o sigurnosti MySQL upita :-)

Pozz ;-)


nema potrebe za tolikim pisanijem

dovoljno je da kao username prosledis bilo_sta_a_moze_i_nista' OR 1=1 --
i izlistace ti celu tabelu sa svim userima ;)

i naravno u ovom konkretnom slucaju korisnik ce proci validaciju


 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: koliko je ovo bezbedno?25.07.2008. u 15:00 - pre 191 meseci
Cini mi se da je poruka upucena meni :-))

Izlistace, ali nece meni prikazati, tako da mi nista ne znaci izlistavanje :-) Zato imam siguran nacin da me ubaci kao korisnika u bazu i imam "admin" pristup :P
 
Odgovor na temu

[es] :: PHP :: koliko je ovo bezbedno?

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

Postavi temu Odgovori

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