Sütik kezelése szerveroldalról

Írta: | 2007. augusztus 27. | kategóriák: Adattárolás, Biztonság, PHP

Számos weboldalon találkozunk olyan háttértárolókkal, mint példáúl a süti (cookie). A sütik olyan, a felhasználó gépén tárolt, állományok, amelyek adatokat tárolnak a weboldal információival. Példáúl el lehet tárolni sütiben azt is, hogy be van lépve az illető a postafiókjába vagy sem.

A süti hátránya a munkamenetekkel szemben az, hogy mivel a böngésző gépén van, nagyon nagy veszélyforrás a személyi adatainkra nézve, hogyha egy oldal sütiben tárolja a belépési információnkat. A sütiket több féle képpen is lehet kezelni, mint példáúl JavaScript segítségével vagy PHPval is. Ebben a leírásban a PHP és a sütik közti viszonyról szerezhetsz ismereteket. PHPban, mivel a header egy részeként kűldődik ki a böngészőnek, ezért még az előtt kell dolgoznunk a sütikkel, mielőtt a tartalom kikűldése megkezdődne (a html tag előtt ! ).

A sütik kezelésére a PHP több módszert is felkínál. A módszerek között van olyan is ami direkt a header() parancsal hajtódik végre, meg olyan is a mi függvényeket használ. Az egyszerűség kedvéért a függvényes változatot részesítem előnyben (értehtőbb).

A setcookie függvény létrehoz egy sütit, ami a többi header információval együtt kerül az olvasó böngészőjéhez. A paraméterek száma egytől hatig terjedő. Kizárólag az első paraméter kötelező, ami a változó nevét tárolja.

név a süti neve (helyesebben a tárolt változó neve) úgy tudunk rá hivatkozni* (nem minden verzióval, később tárgyalom, hogy mi a teendő), hogy $_COOKIE[‘név’]
érték az értéket rendelhetjük mellé, de ne feledjük, hogy az a felhasználó gépén tárolódik, ezért ne tároljunk benne titkos információt (kódolva sem ajánlott) az az érték, amit a fenti tömb név mezője tárol
lejárás az az idő intervallum, amíg a süti használható. Az értéket másodpercekben kell megadni az UNIX időszámítása szerint. a time()+60*60*24*30 példáúl 30 napos intervallumot rendelt a süti lejártához. Ha nem adjuk meg, akkot a böngésző bezárásával megszűnik a süti.
elérési út az az elérési út a szerveren (!), ahol a süti használható ha ‘/’, akkor az egész domain alatt érvényes, ha példáúl ‘/valami/’, akkor csak a valami könyvtárban és az alkönyvtáraiban lesz elérhető
domain a domain ahol érévényes a süti azt álltíhatjuk be, hogy mely domaineken legyen élrhető. Ha ‘.példa.com’, akkor az egész aldomainen érvényes, de ha ‘www.példa.com’, akkor csak a www aldomainen
biztonság azt dönti el, hogy a süti csak biztonságos kapcsolaton (https) megy el, vagy bármilyen kapcsolaton. Az alap az, hogy minden elmegy a süti. 1 vagy 0

A sütiben tárolt értékeket elérhetjük több változón keresztűl is, a leggyakoribbak: $HTTP_COOKIE_VARS (a PHP 3 óta) és a $_COOKIE (a PHP 4.1.0 óta). Az alábbi kód részlet egy példa süti készítésére:

  setcookie('suti','elso suti');
  echo 'OK';

Elkűldi a ‘suti’ nevű változóban a megadott értéket, majd kiírja, hogy: ‘OK’.

Példa a sütik és tömbök közös vonásairól (végul is, a sütit egy több dimenziós tömbként kezeljük)

  setcookie('sutik[1]','elso suti');
  setcookie('sutik[2]','masodik suti');
  setcookie('sutik[3]','harmadik suti');

A sütiben létrehoz egy ‘sutik’ nevű tömböt három értékkel.

A setcookie() párja a setrawcookie(), ami abban különbözik, hogy úgy kűldi el a süti értékét, ahogy azt megadod és nem esik át semmiféle kódoláson.



Értékeld a bejegyzést!

Loading ... Loading ...

A bejegyzésre érkező kommenteket elérheted RSS 2.0 formájában vagy emailben is:

A bejegyzéshez tartozó trackback cím, illetve a permalink.

A megjegyzéseket kérlek, tedd fel érthető és illendő módon, ne fikázz le másokat, mert nem tudnak valamit, amit te már igen. A kommentár lehetőleg függjön a bejegyzéshez :)

kötelező
kötelező, titok marad
ha nincs, maradjon üres



Én úgy gondolom, hogy erös biztonsági kérdéseket vet fel a cookiek használata, így kb csak annyi információt tárolok benne, ami nem érzékeny.

A legjobb és leghatékonyabb kombó szerintem cookieban letárolni a session azonosítót, és csókolom. 🙂

DjZoNe 2007. szeptember 4. - 18:08

Szinte. Én sem használok sok sütit, session IDt is SQL táblában tartom és a sütiben legfeljebb egy összekötő egyedi kulcsot, pl. microtime base 64elve, plusz a unix timestamp md5el, majd az egész md5el és esetleg még néhany más zavró jel belekütyülése is.

Hamarabb feltörik az SQLt vagy az oldalt magát, mint hogy kibogozzák az összefüggést.

Avatar Tupacko
2007. szeptember 4.
21:15

Azért az utóbbi már erős parát feltételez, felesleges 2-3x lekódolni mindent szvsz. Az md5 törhető (idő persze), ha már para, md5(md5($txt)) aztán találja ki a kódtörő hogy most mit talált…
Ugyanígy cookieban tárolt beléptetésnél is user(id) : md5(pass) helyett, célszerűbb valami ip tartományt md5-md5-ölni, vagy base64 salttal megdobni, úgyis többnyire egy helyről logol a júzer, apró trükkök amik évek alatt tanul meg az ember 🙂

cSuwwi 2007. december 2. - 00:53

Nem para, de ügyelni kell a biztonsága is 🙂 Az IPs megoldás, mert egy helyről netezik az ember, nem igaz. El sem tudod képzelni, hogy hányan járnak netkávézóba. Pl. most sem otthonról pötyögök, mivel nem hétvégére eljöttem a városból.
MD5 feltörés? Igen, van, de nagyon-nagyon sok idő. Amúgy meg, ha annyi ideje van valakinek, bármit feltör 🙂 A legjobb kódolás még a mai napig a hibrid, azt a legnehzebb feltörni, mivel sok féle kódolás egyvelege.

Avatar Tupacko
2007. december 2.
17:53

Hogyan lehet a sütiket eggyesével kezelni??

help my 2008. július 1. - 20:45

Nem ertem a kerdest.

Avatar Tupacko
2008. július 2.
11:10

Az hogy pl. a google-ba amiket beírok a keresőbe azt ugye megjegyzi,és én azokat akarom kitörölni,de csak azokat ami nem kell,nem mindet.

help my 2008. július 3. - 01:25

Szerintem azt nem a google jegyzi meg, hanem a bongeszod urlapkezeloje 😉 Amugy meg lehet oldani, amit te szeretnel, pl. egy tombben mented el az adatokat, majd amire mar nincs szukseg, azt a tombbejegyzest torlod a sutibol. Ennel egyszerubb modszer nem igazan letezik, legalabbis nem most nem jut eszembe.
Remelem segitettem 🙂

Avatar Tupacko
2008. július 4.
11:32

nem értem miért olyan nagy a rizikó a sütikkel.a mysql táblákat nem könnyebb feltörni, mint egy személyi gépet?(bocs ha hülye a kérdés)

sicks 2009. január 3. - 19:36

A MySQL tablakat nehezebb feltorni, mint egy PCn tarolt sutit, mivel altalaban a sutiben nem (vagy csak nagyon alap fokon) vannak kodolva az adatok. Nem a PC hack -eleserol van szo. Mindossze teny es valo, ha valakinek van hozzaferese a szemelyi szamitogephez, akkor tobbnyire a sutik tartalmahoz is hozzajut, ha nagyon akar 🙂

Avatar Tupacko
2009. január 3.
20:36

jó az oldal. 😀 xDD
de a sütik vagyis a kukik… xDDDDD
mármint a cookiek nekem sztem nincsenek a gépemen… nemlehet ezt valahol letölteni? Aki nekem válaszolna….Annak naddon hálás lennék.
Chuu~~~
puss: Egy kawaii kisvárosi kissleány, aki sötét a gépek használatához.
Puszy ^___^

Miusy 2009. április 10. - 20:42

A sutik maguktol toltodnek le a gepre, hacsak nem tiltottad le azokat.
[off]ne becsuld le magad, nem vagy te tul sotet, hogyha blogokon keresed a valaszt. A magyar nyelvel viszont szebben is lehet banni[/off]

Avatar Tupacko
2009. április 10.
22:17