Hennikenno Posted February 3, 2009 Report Share Posted February 3, 2009 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 More sharing options...
bubu Posted February 3, 2009 Report Share Posted February 3, 2009 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 More sharing options...
Hennikenno Posted February 3, 2009 Author Report Share Posted February 3, 2009 (edited) 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 February 3, 2009 by Hennikenno Link to comment Share on other sites More sharing options...
Klez Posted February 4, 2009 Report Share Posted February 4, 2009 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 More sharing options...
anonīms Posted February 4, 2009 Report Share Posted February 4, 2009 Ja runājam par šo, tad īsu brīdi arī atpakaļ par šo visu interesējos, bet vairāk no aizsardzības puses. ar cookijiem ir drošāk strādāt nekā ar sesijām. Vai tomēr nē? Link to comment Share on other sites More sharing options...
xPtv45z Posted February 4, 2009 Report Share Posted February 4, 2009 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 More sharing options...
anonīms Posted February 4, 2009 Report Share Posted February 4, 2009 (edited) 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 February 4, 2009 by anonīms Link to comment Share on other sites More sharing options...
bubu Posted February 4, 2009 Report Share Posted February 4, 2009 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 More sharing options...
Aleksejs Posted February 4, 2009 Report Share Posted February 4, 2009 Atļaušos vēlreiz atgādināt par "Hardened stateless cookies" http://php.lv/f/index.php?showtopic=11116 http://php.lv/f/index.php?showtopic=11077&...ost&p=88046 Link to comment Share on other sites More sharing options...
blackhalt Posted February 5, 2009 Report Share Posted February 5, 2009 Ja jau tā, tad sesijas failu var (ja var) nolasīt no servera tmp direktorijas ;) Link to comment Share on other sites More sharing options...
Aleksejs Posted February 5, 2009 Report Share Posted February 5, 2009 blackhalt, var jau glabāt datubāzē... LDAPā... utt. Link to comment Share on other sites More sharing options...
Ghenis Posted February 20, 2009 Report Share Posted February 20, 2009 BlackHalt, normāla prakse ir katram saitam savu tmp direktoriju ;-) Un sesijas var glabāt kur vien sirds vēlas Un par drošu sesiju tēmu: http://phpsec.org/projects/guide/4.html Link to comment Share on other sites More sharing options...
daGrevis Posted March 17, 2009 Report Share Posted March 17, 2009 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 More sharing options...
bubu Posted March 17, 2009 Report Share Posted March 17, 2009 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 More sharing options...
Kavacky Posted March 17, 2009 Report Share Posted March 17, 2009 (edited) 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 March 17, 2009 by Kavacky Link to comment Share on other sites More sharing options...
Recommended Posts