Dakle imam login skriptu al možda imam mali problem s njom jer password spremam u cookie kao md5 kriptirani to ne bi trebalo prdstavljat problem vjeroatno al što vi mislite? i nemojte spominjat sesije za njih znam al nemam tu mogućnost!
malo o sigurnosti....
Zaključano
Zakačeno
Meni je žao, ali zašto bi password uopšte išao u cookie, u bilo kom obliku?
Moraš malo da otkriješ karte, ako ne postoji mogućnost korištenja sesija - postoji li mogućnost rada s bazom ili fajl sistemom?
Moraš malo da otkriješ karte, ako ne postoji mogućnost korištenja sesija - postoji li mogućnost rada s bazom ili fajl sistemom?
Potpis
postoji i jedno i drugo! pa podaci za šifru su i spremljeni ubazi. razmišljao sam da generiram neki id pa da to spremam u cokie bi li to bilo bolje riješenje? ili da isključim cookie pa ip adrsu spremam u bazu al onda opet za trajni login bez cookie-a nemam ideje! što ti preporučaš?
Pa ako pogledaš kako sesije funkcionišu - isto to možeš da odradiš i simulacijom sesije, naravno malo više dodatnog pešačenja ... kad ti već provajder ne nudi sesije, napravi ih sam.
Potpis
Nije mi jasno kako ti nisu sesije na raspolaganju? nio svejedno, napravi jednu cookie variablu koju ces zvati session pa u nju smestaj ID sesije koji ces sam da dodelis korsiniku.
Taj ID cuvaj i u bazi (ili datoteci na serveru) gde ces upisivati sve sto se tice te sesije pa i to da li je korisnik ulogovan. Tako ces kod korisnika imati samo jednu cookie promenljivu koja nema nikakvu korsinu informaciju za korisnika a samim tim i siguran sistem.
Taj ID cuvaj i u bazi (ili datoteci na serveru) gde ces upisivati sve sto se tice te sesije pa i to da li je korisnik ulogovan. Tako ces kod korisnika imati samo jednu cookie promenljivu koja nema nikakvu korsinu informaciju za korisnika a samim tim i siguran sistem.
da mislim da ću neštomtako i napraviti u cookie spremiti id a u bazi svi podaci
Baš tako... i ne zaboravi na serijalizaciju i deserijalizaciju podataka :-)
Potpis
... i ne zaboravi da id-evi ne smeju da idu redom 1,2,3... ili na bilo koji slican lako pogodljiv nacin...
$id=md5(uniqid(rand(), true));
ja koristim ovo mislim da je dosta dobro i u mysql bazi polje je podešeno na unique nego pitanje dal da taj id mjenjam ili kod registracije ga dodijelim i da je stalan zauvijek?
ja koristim ovo mislim da je dosta dobro i u mysql bazi polje je podešeno na unique nego pitanje dal da taj id mjenjam ili kod registracije ga dodijelim i da je stalan zauvijek?
koristi crypt(md5('bezveze_text1'.$UID.'bezveze_tekst2')); a nema ko ce to moci da provali ;) zbog md5, sem ako ne mislis da opensource-ujes program, ili ga prodajes, kad je bolje svakako da koristis sesije. Ovaj workaround ce da ti ustedi petljanje sa bazom
ne ne, kod nećevidjet niko osim mene :D
u to sam siguran da je malo teže provalit budem skovao nešto slično
u to sam siguran da je malo teže provalit budem skovao nešto slično
Pošto već sam naslov teme govori o sigurnosti, bolje je da svoje pitanje postavim ovde nego da otvaram novu temu.
Zanima me koji je najbolji način za obradu promenljivih koje unosi sam korisnik pre upisa u bazu?
Zanima me koji je najbolji način za obradu promenljivih koje unosi sam korisnik pre upisa u bazu?
Potpis
Nije znanje samo znati, već je znanje - znanje dati.
Piši ćirilicom! | Surfujte brže, sigurnije i lakše | Najveća niška online zajednica
Piši ćirilicom! | Surfujte brže, sigurnije i lakše | Najveća niška online zajednica
Ako su promenjive brojevi, onda koristi cast operatore
$x = 1;
$x = (int)$x;
$x = "187;'drop table test'";
$x = (int)$x;
$x = 187;
$y = 1.1;
$y = (float)$y;
Ako je string, koristi addslashes()
A ako postoji mogucnost da ima i nekih html tagova: imas htmlentities i addslashes, a mozes i da uklonis sve tagove sa strip_tags()
ako je promenjiva niz, moraces da obradis svaki parametar posebno, ili kroz call_back F-ju ili rucno, kroz petlju
a uvek mozes da radis i encoding pre upisa sa base64encode ili nesto slicno.
Pored SQL i Code Injection napada moze da bude i XSS napad, koji moze da se primeti tek prilikom citanja iz baze; Ubaci vam neko neki JS kod , i vi kad ga iscitate, i kad korisnik to otvori u browseru, taj JS kod se izvrsi. Zato je korisno koristiti htmlentities, makar prilikom prikazivanja texta, ili jednostavno ukloniti sve tagove.
$x = 1;
$x = (int)$x;
$x = "187;'drop table test'";
$x = (int)$x;
$x = 187;
$y = 1.1;
$y = (float)$y;
Ako je string, koristi addslashes()
A ako postoji mogucnost da ima i nekih html tagova: imas htmlentities i addslashes, a mozes i da uklonis sve tagove sa strip_tags()
ako je promenjiva niz, moraces da obradis svaki parametar posebno, ili kroz call_back F-ju ili rucno, kroz petlju
a uvek mozes da radis i encoding pre upisa sa base64encode ili nesto slicno.
Pored SQL i Code Injection napada moze da bude i XSS napad, koji moze da se primeti tek prilikom citanja iz baze; Ubaci vam neko neki JS kod , i vi kad ga iscitate, i kad korisnik to otvori u browseru, taj JS kod se izvrsi. Zato je korisno koristiti htmlentities, makar prilikom prikazivanja texta, ili jednostavno ukloniti sve tagove.
Ili htmlspecialchars prilikom izlaza svega sto nisi sam pisao
addslashes pre upisa svakog stringa u bazu
stripslashes v gore
addslashes i stripslashes potpuno iskljucuju SQL injection problem
register_globals je samo debilu moglo da padne na pamet da implementira uopste
addslashes pre upisa svakog stringa u bazu
stripslashes v gore
addslashes i stripslashes potpuno iskljucuju SQL injection problem
register_globals je samo debilu moglo da padne na pamet da implementira uopste
Hvala na odgovorima. Postoji li još nešto o čemu bih trebao da povedem računa prilikom pisanja skripti a tiče se bezbednosti same aplikacije?
Potpis
Nije znanje samo znati, već je znanje - znanje dati.
Piši ćirilicom! | Surfujte brže, sigurnije i lakše | Najveća niška online zajednica
Piši ćirilicom! | Surfujte brže, sigurnije i lakše | Najveća niška online zajednica