Peršokti į turinį

Padėkit su PHP


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2822 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Labas, susiduriau su klaida.
Bandau paset'tinti cookie iš POST metodo, bet jis nekaip neset'inasi. Štai kodas:
Kame čia gali būti klaida? gal blogai setcookie naudoju?

        else if($psl=="prisijungimas")
	{
		$vardas = $_POST['vardas'];
		$password = $_POST['pass'];

		$query="SELECT vardas,slaptazodis FROM zaidejai WHERE vardas='$vardas'";
		$tvardas =  mysqli_query($link,$query);
		
		$tvardas = $tvardas->fetch_array(MYSQLI_ASSOC);
		
		if($tvardas['vardas']!=$vardas) { die("Tokio vartotojo nera"); }
		if($tvardas['slaptazodis']!=$password) { die("Neteisingas slaptazodis"); }
		//$tvardas->free;
		//echo "Jus sekmingai prijungtas prie sistemos";
		
		//setcookie('vardas',$_POST['vardas'],3600);
		setcookie("vardas",$vardas,3600);
		
		header("Location: index.php");
	}
  • Teigiamai 1
  • Neigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 2 savaičių...

Sveikas. Pradėkim nuo pradžios. 

$query="SELECT vardas,slaptazodis FROM zaidejai WHERE vardas='$vardas'";

Naudoti tokį query yra nesaugu. Jei taip paliksi, galima bus padaryti daug smagių dalykų: sunaikinti visas database lenteles, išvalyti visus userius ir taip toliau :) http://php.net/manual/en/mysqli-stmt.bind-param.php - čia turėtum rasti informacijos, kuri padės apsisaugoti nuo tokių dalykų.

 

Toliau. 

setcookie("vardas",$vardas,3600);

O jeigu aš per kokį cookie manager pasikeisiu savo vardą į administratoriaus? Kaip suprantu, tada aš būsiu prisijungęs prie administratoriaus acc. Dar viena saugumo spraga. Išvis, autentifikuoti vartotoją pagal vardą yra bloga mintis, nebent uždrausi vardo keitimą, kas irgi nėra puiki mintis... Geriau tai daryti pagal ID. Jei nori saugoti tik ID, tada dėk jį į sesiją, bus bent jau saugiau. Jei nori dirbti su cookie, yra daug variantų... Pavyzdžiui gali papildomai įdėti į kitą cookie su password_hash() funkcija užkoduotą vartotojo slaptažodį ir tikrinti pagal jį (pirma mintis šovusi į galvą, nes cookie pats beveik nenaudoju).

 

Dar siūlyčiau koduoti slaptažodžius... Pasiskaityk apie password_hash() ir password_verify() funkcijas, kurios dabar yra patikimiausios...

 

Ar gauni kažkokią klaidą? Pabandyk nuimti headerį, pažiūrėk ar nieko nemeta.. Iš šito kodo daugiau pasakyti vargu ar galima.

  • Teigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

Sveikas. Pradėkim nuo pradžios. 

$query="SELECT vardas,slaptazodis FROM zaidejai WHERE vardas='$vardas'";

Naudoti tokį query yra nesaugu. Jei taip paliksi, galima bus padaryti daug smagių dalykų: sunaikinti visas database lenteles, išvalyti visus userius ir taip toliau :) http://php.net/manual/en/mysqli-stmt.bind-param.php - čia turėtum rasti informacijos, kuri padės apsisaugoti nuo tokių dalykų.

 

Toliau. 

setcookie("vardas",$vardas,3600);

O jeigu aš per kokį cookie manager pasikeisiu savo vardą į administratoriaus? Kaip suprantu, tada aš būsiu prisijungęs prie administratoriaus acc. Dar viena saugumo spraga. Išvis, autentifikuoti vartotoją pagal vardą yra bloga mintis, nebent uždrausi vardo keitimą, kas irgi nėra puiki mintis... Geriau tai daryti pagal ID. Jei nori saugoti tik ID, tada dėk jį į sesiją, bus bent jau saugiau. Jei nori dirbti su cookie, yra daug variantų... Pavyzdžiui gali papildomai įdėti į kitą cookie su password_hash() funkcija užkoduotą vartotojo slaptažodį ir tikrinti pagal jį (pirma mintis šovusi į galvą, nes cookie pats beveik nenaudoju).

 

Dar siūlyčiau koduoti slaptažodžius... Pasiskaityk apie password_hash() ir password_verify() funkcijas, kurios dabar yra patikimiausios...

 

Ar gauni kažkokią klaidą? Pabandyk nuimti headerį, pažiūrėk ar nieko nemeta.. Iš šito kodo daugiau pasakyti vargu ar galima.

Dėkui už pagalbą, jau seniai susitvarkęs :D

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2822 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...