Jump to content
php.lv forumi

Recommended Posts

  • Replies 42
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

Nē, paroles veidošanas funkcija (kaut arī to es pārveidotu) šoreiz nav galvenais. Galvenais ir tas, ka cookijā vienmēr tiek ierakstīta fiksēta vērtība - un tas ir slikti.

Posted (edited)

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
Posted

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ņš).

Posted (edited)

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
Posted (edited)

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
Posted
Array ( [0] => 1 [1] => 3934396130656433363861656433643833333534393739363933336534333139 [2] => 0 [3] => 1989568926 [4] => -641242685 [5] => [6] => 913e1104a83528f327150346ecdefd7246232cc23f7da39850b9ed7e8177f7c052c00a00d8b791b11f215844beaa626093ec6e1273574d537dae2d59dbcedd37 ) 5
Posted

Nu un vai lietotājam DB parole glabājas kā:

3934396130656433363861656433643833333534393739363933336534333139

?

Pamēģini šādi:

if(!check_pw($mas[0],pack('H*',mas[1])){

Posted

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

Posted
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ā.

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...