Jump to content
php.lv forumi

login script with cookies


anonīms

Recommended Posts

Tātad nepieciešams pāriet no sesijām uz cepumiem, lai var izmantot remeber me f-ju un galvenais, lai tas viss būtu droši.

Tagadējās kods: http://paste.php.lv/d3bb0ea8381fd87dca541c3b0c6188e4?lang=php

 

Kas nepieciešams, lai pārietu uz cepumiem? Cik esmu dzirdējis vajag db izveidot vēl papildus kollonu, cookie_hash vai kko tādu, bet īsti nezinu kam tas domāts. googlē meklēju, bet tur ir pārāk daudz liekā (praktiski visi veidoti ar klasēm) un php.lv neatradu.

 

Gaidu ierosinājumus kā pāriet uz cepumiem un galvenais, lai tas būtu droši.

Link to comment
Share on other sites

  • Replies 42
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

un teiksim, ja man jau ir reģistrēti pārsimts lietotāji, tad tiem, kuri jau ir reģistrējušies es pie logina varu pārbaudit

if(empty(salts) { uzģenerējam saltu }

vai arī man savādāk jau reģistrētajiem viņu pielikt?

 

EDIT: un jā.

varētu paskadrot kapēc ir domāta tāda get_salt f-ja?

kapēc teiksim nevar vnk select salt from lietotaji where id = ?

?

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

Nu, jā... jau reģistrētiem vari uz pārejas periodu izveidot procedūru, kas neesoša sāls gadījumā pārkonvertē uz jauno sistēmu... vai arī atkarībā no tā, kādā formātā šobrīd glabājas paroles, vari uztaisīt skriptu, kas izmanto db esošo paroli (vai, cerams, tās hashu), lai uzģenerētu jaunā tipa hashu...

 

[edit] Funkcija get_salt būtībā tieši to arī dara, bet sakarā ar to, ka šī lieta ir vajadzīga vairākās koda vietās, tādēļ arī pataisīta par funkciju. Lai nevajadzētu veikt labojumus vairākās vietās.

Link to comment
Share on other sites

EDIT: un jā.

varētu paskadrot kapēc ir domāta tāda get_salt f-ja?

kapēc teiksim nevar vnk select salt from lietotaji where id = ?

?

piemērs:

function get_salt($uid){
$q = mysql_result(mysql_query("SELECT salt FROM users WHERE id = '".$uid."' LIMIT 1"),0,0);
return $q;
}

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

Var arī tā, bet es biju izlēmis visur, kur var izmantot vismaz prepared statementus.

un, protams, laikam drīzāk biji domājis:

function get_salt($uid){
$q = mysql_fetch_array(mysql_result(mysql_query("SELECT salt FROM users WHERE id = '".$uid."' LIMIT 1"),0,0));
return $q[0];
}

un cerams pirms tam pārbaudīji, kaa iekš $uid nekādas sliktas lietas nav sarakstītas ;)

Link to comment
Share on other sites

nu tajā uid neko nevarēs ierakstīt, jo tas id tiks padots bišk savādāk..

Tāk, nu esmu saskāries ar pirmo ķibeli.

 

	$salta_parbaude = mysql_fetch_assoc($parbaude_vai_ok);
if(empty($salta_parbaude['salt']))
{
$salt = make_salt();
mysql_query("UPDATE ".PREFIX."lietotaji SET salt = '".$salt."' WHERE lietotajvards = '".mysql_real_escape_string($_POST['user'])."'") or die(mysql_error());
}

 

tikai vēl testēju to salt. tas nav gala iznākums..

Tātad salt ir char(128) bet ir tā, ka tas salts paliek tukšs..

function make_salt(){
$salt='';
for($x=0;$x<64;$x++){
	$salt.=chr(mt_rand(0,255)); //ģenerējam sāli ar garumu 512b
}
return $salt;
}

 

db paliek tukšs..

 

iznākums tam $salt sanāk: aU?OQgۍtsP!Xav4Scgj!Ml0oD5PB֎DXċW

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

šajā failā ir aprakstītas funkcijas, kas izveido, maina datus iekš DB:

http://paste.php.lv/7694?lang=php

 

hash speciāli tiek izsaukts ar pēdējo parametru "false", lai tiktu atgriezti tieši tie 512biti... pēc tam ar PHP funkciju bin2hex vērtība tiek pārtaisīta heksadecimālajā pierakstā.

bin2hex() ir PHP funkcija, nevis MySQL. ;)

Link to comment
Share on other sites

Manuprāt galīgi nav ok ar drošību.

Kas tad Tev tajā cookie glabājas? salt? Nē, tas ir galīgi aplami. Tad sanāk, ka vienmēr un visur lietotāju identificēs viena un tā pati vērtība un es uzzinot salt vērtību bez problēmām varu ielogoties.

 

Salt izmanto pavisam citam mērķim:

lai ja lietotājs A izvēlas paroli suns

un lietotājs B izvēlas paroli suns

tomēr db saglabātās hash vērtības:

Piemēram: hash($salt . $password)

būtu šiem lietotājiem atšķirīgas.

 

Izlasi to rakstu par "Secure stateless session cookies"

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