Írta: Tupacko | 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.
É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.