aug
27
Írta: Tupacko, 2007-08-27, (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:

1
2
  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)

1
2
3
  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.

Ezek az ikonok ún. közösségi könyvjelző oldalakra mutatnak, ahol meg lehet osztani másokkal is amit fontosnak találsz.
  • description
  • blogtercimlap
  • Linkter
  • bodytext
  • del.icio.us
  • NewsVine
  • Furl
  • Reddit
  • Spurl
  • Technorati
  • YahooMyWeb
  • co.mments
  • Google
  • Live
  • Ma.gnolia
  • TwitThis
( szavazat)
Loading ... Loading ...



Hozzaszólások:
8 hozzaszólás a "Sütik kezelése szerveroldalról" bejegyzéshez.
DjZoNe, weboldala, 2007. szeptember 4., 18:08

É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. :)


Tupacko, weboldala, 2007. szeptember 4., 21:15

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.


cSuwwi, weboldala, 2007. december 2., 00:53

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 :)


Tupacko, weboldala, 2007. december 2., 17: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.


help my, weboldala, 2008. július 1., 20:45

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


Tupacko, weboldala, 2008. július 2., 11:10

Nem ertem a kerdest.


help my, weboldala, 2008. július 3., 01:25

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.


Tupacko, weboldala, 2008. július 4., 11:32

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 :)


Szólj hozza!

Név: 
Email: 
Weboldal *
Hozzaszólás: 
*Nem kötelező megadni, ha nincs weboldalad, akkor hagyd üresen!