Citat:
Radovan__III: Vazno je da ne prenosis neke vazne podatek tipa password ili slicno i da dobijene get podatke ne koristis direktno u upitima jer tako najcesce dolazi do hakovanja
A čekaj, u ovom slučaju kada svi $GET podaci prođu kroz petlju, oni su provereni, i ja ih mogu koristiti dalje(direktno u upitima) jer bi se u suprotnom zaustavilo izvršavanje skripte sa komandom die().
Znači prvi kod u php-u je:
Code:
foreach ($_GET as $var => $val)
{
if (!preg_match("/^[0-9a-zA-Z_\-]+$/D", $var) || !preg_match("/^[0-9a-zA-Z_\-]+$/D", $val)) die();
}
i ako su svi $GET podaci tačni odnosno u ovom mom slučaju 0-9.a-z,A-Z,_,- onda ja bez problema mogu napisati
Code:
echo $GET['data'];
Znači koristio sam direktno $GET ali sam ga pre toga proverio. Ako bilo koji $GET sadrži karakter koji nisam dozvolio skripta će se završiti pre nego što dođe do echo-a. To sam hteo da pitam, da li sam se tako u potpunosti zaštitio od hakovanja preko get-a. Naravno pod uslovom da ne šaljem šifre preko $GET-a.
Citat:
bojan_bozovic: Get podaci se mogu naci u linkovima, pa time i u server logovima i rezultatima pretrage. Sigurnost je, znaci, nikakva. Sto se provere tih podataka tice budi pazljiv da potpuno iskljucis mogucnost SQL injectiona. U principu, najlakse je sve cemu ne odgovaras u skripti odgovoriti 404 stranicom bez konektovanja na bazu.
Pa zar je moguće doći do SQL injectiona ako $GET podaci prođu ovu moju prvu proveru? Kontam da treba da obratim pažnju na proveru podataka koji se šalju preko nekog INPUT-a ali to neće biti slučaj u ovom mom primeru. Znači šaljem samo neke promenljive koje nemaju veze sa nekim formama. Ako znači neko pošalje nešto što sadrži ',? ili < to neće proći prvu proveru u foreach-u i neće moći doći do moguće konekcije na bazu itd.