Jump to content
php.lv forumi

Cookies vs Session


Hennikenno

Recommended Posts

Sveiki. Pirmāmkārtam es ļoti ceru, ka pareizajā sadaļā būšu iepostojies, jo te viņu ir daudz :D Tātad, mans jautājums sekojoš: Kā atbrīvot savu web lapu no kukijiem un pārveidot to visu uz session? Vai tas ir viegli / grūti? Vai ir daudz jāpārraksta kods, vai pietiek izmaninīt tikai tās funkcijas, kas man nodrabojas ar kukiju apstrādi? Un kā tas (session) vispār darbojas? Es tikai zinu kā tas izskatās teorētiski, bet kā tas izskatās php kodā es nezinu, jo nav bijusi saskarsme ar tādiem! Ja var, tad lūdzu ar kādiem maziem piemēriem! ;)

 

 

Nedaudz konkrētāk par manu sistēmu: tātad man web lapā ielogojas ar kukijiem. To paveic funkcija, kas kukijā saglabā lietotāja id un passhash (vēlreiz nohašotu). Tad katrā lapas ielādē tiek izpildīta funkcija, kas savāc no lietotāja kukiju (ja tāds ir), savāc no datubāzes visu info par lietotāju ar id kāds bija kukijā, tad athašo lietotāja passhashu no kukija un salīdzina to ar lietotāja passhashu no datubāzes. Ja viss veiksmīgi, tad ļauj ielādēt tālāk galveno lapu nodefinējot lietotāja info no datubāzes kā $CURUSER. Un trešā funkcija attiecīgi izpildās, kad lietotājs izlogojās, izdzēšot kukija info!

 

Nezinu, cik tehniski pareizi šo visu uzrakstīju, bet neesmu eksperts, bet drīzāk tāds kā pašmācības amatieris! Ja kāds var palīdzēt - būšu ļoti pateicīgs. Ja gribat redzēt kādu no visiem šiem kodiem (ja tas var palīdzēt jums paskaidrot kko), tad droši prasiet!

 

 

Paldies jau iepriekš, Hennikenno! ;)

Link to comment
Share on other sites

Lai darbotos sesijas, lietotājs kautkā ir jāidinficē. Vispopulārākais veids ir sūtīt kukiju, kurā glabāsies sesijas identifikators. Tā ka īsti no kukijiem tu vaļā netiksi, ja lietosi sesijas. Protams, ir cits veids kā darbināt sesijas - katram urlim galā kabināt to sesijas identifikatoru, bet nu tas imho izskatās neglīti - katra lapas linka galā desmiti random simboli.

Link to comment
Share on other sites

Lai darbotos sesijas, lietotājs kautkā ir jāidinficē. Vispopulārākais veids ir sūtīt kukiju, kurā glabāsies sesijas identifikators. Tā ka īsti no kukijiem tu vaļā netiksi, ja lietosi sesijas. Protams, ir cits veids kā darbināt sesijas - katram urlim galā kabināt to sesijas identifikatoru, bet nu tas imho izskatās neglīti - katra lapas linka galā desmiti random simboli.

 

 

Domājams, ka tas ar to kukiju būtu tākā labāk... :D Bet konkrētāk par šo gadījumu? Vai ir daudz jāpārraksta kods, lai visu pārveidotu?

 

 

EDIT: tak, tikai tagad pamanīju, ka šajā forumā ir topiks par sesijām... :D Paskatīšu un palasīšu. Moš izdomāšu, kā panakt vēlamo. Bet ja nē - ceru, ka šeit kāds būs ierakstījis ko noderīgu!

Edited by Hennikenno
Link to comment
Share on other sites

kuukiju mainiigie jāaizstāj ar sesijas

$_COOKIE -> $_SESSION

un sesijām arī mazliet savādāks princips ira ..

nav jāseivo ...

 

if ($_SESSION['ir_ielogojies'])

{

//ir ielogojies

}else

{

//nav ielogojies, raadaam login

}

 

un kad logojas

mysql(SELECT parole FROM users where user=xx)

if (post_paroles_hash == mysql-parole)

{

$_SESSION['ir_ielogojies'] = 1;

}

Link to comment
Share on other sites

Kūkiji nevarētu būt drošāki par sesijām. Sesijā ielikts 1 arī būs 1, kūkijā lietotājs to var mainīt. Tie ir servera dati pret lietotāja datiem. Bet interesanti uzzināt, kā tu pie tāda secinājuma biji nonācis, ka kūkiji ir drošāki?

Link to comment
Share on other sites

citēšu cilvēku no cita foruma.

 

Bet principā lietotājvārdu un paroli glabāt sesijā nav pārāk gudri. Kapēc? Sesijas id ir publiski pieejama informācija (sevišķi, ja tas tiek padots caur urli un urlis nosūtīts kādam draugam, draugs tiks autorizēts kā tu).

 

Es ieteiktu sesijā vai cepumā pieglabāt kautkādu uz haļavu ģenerētu mainīgo. Datubāzē pieglabājam šī mainīgā un vēl kautkā (kautkādi mainīgie, kas katram datoram būs savi) hašu, pēctam salīdzinam cepuma vai sesijas un šo unikālo mainīgo hešu ar datubāzē ierakstīto.

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

Tas "Sesijas id ir publiski pieejama informācija" attiecas arī uz "vai cepumā pieglabāt kautkādu uz haļavu ģenerētu mainīgo". Tikpat labi "ļaunais hakeris" var zagt nevis sesijas id, bet tavu cepumu ar uz haļavu ģenerēto mainīgo. Abi varianti ir gandrīz vienādi.

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 weeks later...

Cik es sapratu, kad man skaidroja šīs lietas viens čalīts, tas sesijas id ("sid") normālās lapās aiz lapas linka vajadzētu padoties tikai tad, ja lietotājam ir izslēgti "cookies"... Un droši zinu, ka "cookies" nav tik droši kā sesijas, jo tos, pa visam vienkārši, var nozagt... :)

Link to comment
Share on other sites

Kukiji ir tik pat droši kā sesijas. Tie abi balstās uz principu, ka lietoājam jāidod kāds unikāls identifikators, kurš tiks padots atpakaļ uz severi pie nākamā http pieprasījuma, tādējādi identificējot lietotaju.

Link to comment
Share on other sites

Tev var nozagt, ko grib, bet ja tu, piemēram, identificē papildus pēc IP adreses, tad sazagtais būs pa tukšo.

 

Nē, nu arī to var nozagt, bet tad jau ir vieglāk iedot pa taisno bietē un paprasīt, lai pielaž ļaundarus pie vajadzīgajiem datiem.

Edited by Kavacky
Link to comment
Share on other sites

×
×
  • Create New...