Jump to content
php.lv forumi

login script with cookies


anonīms

Recommended Posts

tad reāli sanāk, ja man jāpārveido savu patreizējo paroles veidošanas funkciju un tas tad arī viss būs "ok"?

http://paste.php.lv/11f79af9d0bff1b6261aaad9fcfb4f0c?lang=php <- patreizējā f-ja.

Un jā - kā tad jauno pw uzstādīt lietotājiem, kas jau ir reģistrēti, bet kuriem vēl nav salts?

Link to comment
Share on other sites

  • Replies 42
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Un ko man iesākt tagad?

function check_submitted_pw($username,$password,$autorenew){
global $remember;
$authenticated = false;
$uid=get_uid($username);
//echo "|$uid|";
if('' != $uid){
	$salt=get_salt($uid);
	//echo "|$salt|";
	if('' != $salt){
		$salt=pack('H*',$salt);
		$parole = make_password($salt,$password);
		$parbaudama_parole = hash('sha512',$parole . $salt,false);
		if(check_pw($uid,$parbaudama_parole)){
			$authenticated = maketoken($uid,$parole,$autorenew,mktime()+$remember,'');//izveidojam vērtību, kas derīga $remember sekundes
		}
		else {
			//echo "necheck pw";
		}
	}
	else {
		//echo "ne salt";
	}
}
else {
	//echo "ne uid";
}
return $authenticated;
}

 

precīzāk jau tieši paroles pārbaude (jo man pw tika savadāk ģenerēta un tagad šķiet, ka sanāk, ka visas pw, kas ir db varētu būt nederīgas).

$parole = make_password($salt,$password);

$parbaudama_parole = hash('sha512',$parole . $salt,false);

 

?

 

 

EDIT: šķiet, ka man vnk nepieciešams šādi, ne?

				$authenticated = maketoken($uid,pw($parole),$autorenew,mktime()+$remember,'');//izveidojam vērtību, kas derīga $remember sekundes

jo reāli tagad pw nav ar saltu, bet ģenerētas ar pw() fju.

Tātad pārbaudu vai db pw sakrīt ar post pw un tad maketoken'u taisu.

Edited by anonīms
Link to comment
Share on other sites

Nu, ņemot vērā, ka viss tiek šifrēts ar servera atslēgu, tad vari tās paroles nelikt nemaz tajā tokenā... Cik labi vai slikti tas sanāk, jāpadomā. Principā jau iespējams pietiek ar to, ka var veiksmīgi atšifrēt un nokonstatēt, ka kontrolsumma ir derīga un ka laika zīmoga lauka vērtība nav par mazu (beidzies derīguma termiņš).

Link to comment
Share on other sites

Nu pašlaik esmu ticis tik tālu: http://paste.php.lv/eebd605fd4d19d841acfe78e63b76139?lang=php

Kods kā tāds aiziet normāli līdz pat login pārbaudei, kur esmu nedaudz apjucis..

	if(!check_pw($mas[0],hash('sha512',pack('H*',$mas[1]).pack('H*',$salt),false))){
	return 5;//nepareiza parole - ļoti savādi!!! Laikam nomainīta parole
}

līdz šai rindai viss ok.. bet nu kā man izlabot šīs rindiņas (saprotu, ka lieks tur ir hash(), bet kā man izveidot, lai pārbauda ar manu pw()?

Edited by anonīms
Link to comment
Share on other sites

tāpat izmet man return 5.

Kur un kā tie iegūts tas xmas[1]?

Vnk no db izvilkts?

 

EDIT: sapratu kā tie iegūts xmas (no cepuma $mm, kurš tiek savukārt iegūts no cepuma)

bet nu tāpat netiku skaidrībā kapēc met return 5

 

EDIT: 2

a kas tas par $user_data? 202 rinda.

tur gadījumā nevajag kādu datu no db?

 

EDIT: 3 echo $mas rāda tukšumu... tad iespējams vaina ir tur, tik ko likt $user_data vietā?

 

EDIT: 4. Galvenais jautājums...

kā īsti parbauda vai ir ielogojies vai nav? tiek izmantots cepums un viņš tiek salīdzināts ar ko?

cepums == salt? vai kā tur notiek? Nu principā man ir tikai jāzin vai teiksim ielogojoties arī db nevajag nomainīt saltu

Edited by anonīms
Link to comment
Share on other sites

Array ( [0] => 1 [1] => 3934396130656433363861656433643833333534393739363933336534333139 [2] => 0 [3] => 1989568926 [4] => -641242685 [5] => [6] => 913e1104a83528f327150346ecdefd7246232cc23f7da39850b9ed7e8177f7c052c00a00d8b791b11f215844beaa626093ec6e1273574d537dae2d59dbcedd37 ) 5
Link to comment
Share on other sites

Nē, 949a0ed......

a problēma nevarētu būt tad, kad vēl tiek veidots tikai tokens?

maketoken. teiksim kkur šeit, kur tiek savādāk kkas samontēts:

$data=$uid.','.bin2hex($parole) .','.intval($autorenew).','.intval($expire). ','.ip2long($_SERVER['REMOTE_ADDR']) . ',' . bin2hex($info);//info - papildus mainīgie utt, kas jāsaglabā no vienas lapas uz otru

Link to comment
Share on other sites

kā īsti parbauda vai ir ielogojies vai nav? tiek izmantots cepums un viņš tiek salīdzināts ar ko?

cepums == salt? vai kā tur notiek? Nu principā man ir tikai jāzin vai teiksim ielogojoties arī db nevajag nomainīt saltu

Pārbauda vai:

cookie vērtību atšifrējot ar servera atslēgu izpildās nosacījums, ka pirmo sešu lauku kontrolsumma (HMAC ar servera atslēgu) sakrīt ar piestādīto kontrolsummu (septīto lauku). Kā arī vai nav mainījusies IP adrese $mas[4], nav beidzies temiņš $mas[3].

 

Edit: if(!check_pw($mas[0],pack('H*',mas[1])){ būtu jāstrādā.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...