Bukas
Isara

PHP cookies - lumikha, magbasa, magtanggal. Imbakan ng data Mga Aklatan para sa pagtatrabaho sa cookies

Ipinapakita ng larawan na naglalaman ang cookie ng linyang wordpress_logged_in_263d663a02379b7624b1028a58464038=admin. Ang halagang ito ay nasa hindi naka-encrypt na anyo sa cookie at madaling ma-intercept gamit ang Achilles utility, ngunit sa karamihan ng mga kaso sa Achilles makikita mo lang ang hash ng isang partikular na entry. Bago ipadala ang kahilingan sa server, maaari mong subukang palitan ang linyang ito ng anumang katulad (bagaman sa kasong ito ay walang punto) - ang bilang ng mga pagtatangka ay hindi limitado. Pagkatapos, sa pamamagitan ng pagpapadala ng kahilingang ito sa server gamit ang Send button, maaari kang makatanggap ng tugon mula sa server na inilaan para sa administrator.

Sa nakaraang halimbawa, maaari mong gamitin ang direktang panggagaya ng user ID. Bilang karagdagan, ang pangalan ng parameter, na ang pagpapalit ng halaga ay nagbibigay ng mga karagdagang pagkakataon para sa hacker, ay maaaring ang sumusunod: user (halimbawa, USER=JDOE), anumang expression na may ID string (halimbawa, USER=JDOE o SESSIONID= BLAHBLAH), admin (halimbawa, ADMIN= TRUE), session (halimbawa, SESSION=ACTIVE), cart (halimbawa, CART=FULL), pati na rin ang mga expression tulad ng TRUE, FALSE, ACTIVE, INACTIVE. Kadalasan, ang format ng cookies ay nakadepende sa application kung saan ginagamit ang mga ito. Gayunpaman, ang mga tip na ito para sa paghahanap ng mga bahid ng application gamit ang cookies ay nalalapat sa halos lahat ng mga format.

Mga hakbang sa panig ng kliyente laban sa pagkuha ng cookie

Sa pangkalahatan, dapat mag-ingat ang mga user sa mga Web site na gumagamit ng cookies para sa pagpapatunay at para mag-imbak ng sensitibong data. Kinakailangan din na tandaan na ang isang Web site na gumagamit ng cookies para sa pagpapatunay ay dapat na sumusuporta sa hindi bababa sa SSL protocol upang i-encrypt ang username at password, dahil sa kawalan ng protocol na ito, ang data ay ipinadala nang hindi naka-encrypt, na ginagawang posible na maharang ito. gamit ang mga simpleng tool sa software upang tingnan ang data na ipinapadala sa network.

Ang Kookaburra Software ay bumuo ng isang tool upang mapadali ang paggamit ng cookies. Ang tool ay tinatawag na CookiePal (http://www.kburra.com/cpal.html (tingnan ang www.kburra.com)). Idinisenyo ang program na ito upang alertuhan ang user kapag sinubukan ng isang Web site na mag-install ng cookie sa makina, at maaaring payagan o tanggihan ng user ang pagkilos na ito. Ang mga katulad na pag-block ng cookie ay magagamit sa lahat ng mga browser ngayon.

Ang isa pang dahilan para sa regular na pag-install ng mga update sa Web browser ay ang mga bahid ng seguridad sa mga program na ito ay patuloy na kinikilala. Kaya, gumawa sina Bennet Haselton at Jamie McCarthy ng script na, pagkatapos mag-click sa isang link, kinukuha ang cookies mula sa makina ng kliyente. Bilang resulta, magiging available ang lahat ng nilalaman ng cookies na nasa makina ng user.

Ang ganitong uri ng hack ay maaari ding magawa sa pamamagitan ng paggamit ng handle na naka-embed sa HTML na text ng isang Web page (o sa HTML na content ng isang email o newsgroup na pag-post) upang magnakaw ng cookies. Isaalang-alang ang sumusunod na halimbawa:

Upang matiyak na ang mga naturang bagay ay hindi nagbabanta sa aming personal na data, ako mismo ang gumagawa nito at pinapayuhan ang lahat na palaging mag-update ng software na gumagana sa HTML code (mga e-mail client, media player, browser, atbp.).

Mas gusto ng maraming tao na i-block lang ang cookies, ngunit karamihan sa mga Web site ay nangangailangan ng cookies na ma-browse. Konklusyon - kung sa malapit na hinaharap ay lilitaw ang isang makabagong teknolohiya na nagpapahintulot sa iyo na gawin nang walang cookies, ang mga programmer at administrator ay makahinga ng maluwag, ngunit sa ngayon ang cookies ay nananatiling isang masarap na subo para sa isang hacker! Totoo ito, dahil wala pang mas mahusay na alternatibo.

Mga hakbang sa panig ng server

Sa kaso ng mga rekomendasyon para sa pagtiyak ng seguridad ng server, ang mga eksperto ay nagbibigay ng isang simpleng payo: huwag gamitin ang mekanismo ng cookie maliban kung talagang kinakailangan! Ang partikular na pangangalaga ay dapat gawin kapag gumagamit ng cookies na nananatili sa system ng user pagkatapos ng pagtatapos ng session ng komunikasyon.

Siyempre, mahalagang maunawaan na ang cookies ay maaaring gamitin upang magbigay ng seguridad sa mga Web server para sa pagpapatunay ng user. Kung kailangan ng iyong application na gumamit ng cookies, dapat mong i-configure ang mekanismo ng cookie upang gumamit ng iba't ibang short-lived key para sa bawat session, at subukang huwag maglagay ng impormasyon sa mga file na ito na maaaring gamitin ng mga hacker para sa pag-hack (tulad ng ADMIN=TRUE) .

Bilang karagdagan, upang magbigay ng higit na seguridad kapag humahawak ng cookies, maaari mong gamitin ang pag-encrypt ng cookie upang maiwasan ang pagkuha ng sensitibong impormasyon. Siyempre, hindi malulutas ng pag-encrypt ang lahat ng mga problema sa seguridad kapag nagtatrabaho sa teknolohiya ng cookie, ngunit mapipigilan ng pamamaraang ito ang pinakapangunahing mga hack na inilarawan sa itaas.

Minsan kailangan mong gumawa ng cookies sa pamamagitan ng JavaScript. Halimbawa, ang cookie ay maaaring maging alternatibong opsyon para sa pagpapalitan ng data sa pagitan ng PHP at JavaScript. Sabihin nating isinusulat ng JavaScript ang kasalukuyang oras ng user sa computer (iyon ay, ang kanyang lokal na oras) sa cookie ng user, at binabasa ng PHP ang data na ito at isinasaalang-alang ang offset na nauugnay sa oras ng server. Ngayon tingnan natin kung paano gumawa ng cookies sa pamamagitan ng JavaScript.

Ang tanging bagay na dapat gumana ng JavaScript sa cookies ay ang cookie property ng object ng dokumento:


alerto(document.cookie);

Bilang resulta ng pagpapatakbo ng code na ito, ang lahat ng cookies mula sa site na ito ay ipapakita, at sa isang tiyak na format. Mukhang ganito: "name=123; login=456". Ano ang dapat mong bigyang pansin dito? Ang katotohanan ay ang lahat ng cookies, siyempre, ay may isang pangalan at isang halaga, at ang mga cookies mismo ay pinaghihiwalay mula sa isa't isa ng isang semicolon at isang puwang.

Alam ang format na ito, madali mong makukuha ang halaga ng gustong variable.

Upang magdagdag ng isa pang variable sa pamamagitan ng JavaScript, kailangan mong isulat ang sumusunod na code:


document.cookie = "bago=5";

Pakitandaan na ito ay "=" at hindi "+=". Sa kasong ito, hindi mo binubura ang lahat ng umiiral na cookies, ngunit magdagdag ng bagong variable.

Pagdating sa pagtanggal ng cookies, maaari mong samantalahin ang katotohanan na posibleng tukuyin ang buhay ng cookie. At kung ipahiwatig mo na dapat itong natapos noong isang taon, ang cookie ay agad na tatanggalin.

Para mabigyan ka ng kumpletong ideya, ipinapakita ko ang code para sa lahat ng 3 function para sa pamamahala ng cookies, pati na rin ang isang halimbawa ng paggamit ng mga ito:


function setCookie(pangalan, halaga) (
document.cookie = pangalan + "=" + halaga;
}
function getCookie(pangalan) (
var r = document.cookie.match("(^|;) ?" + pangalan + "=([^;]*)(;|$)");
kung (r) ibalik ang r;
iba bumalik "";
}
function deleteCookie(pangalan) (
var date = bagong Petsa(); // Kunin ang kasalukuyang petsa
date.setTime(date.getTime() - 1); // Bumalik sa "nakaraan"
document.cookie = pangalan += "=; expires=" + date.toGMTString(); // Itakda ang cookie sa isang walang laman na halaga at isang petsa ng pag-expire hanggang sa lumipas ang oras
}
setCookie("firstname", "Vasya"); // Itakda ang cookie
alert(getCookie("firstname")); // Output cookies
deleteCookie("pangalan"); // Tanggalin ang cookies
alert(getCookie("pangalan")); // Siguraduhing walang natira

Ito ang pinakasimpleng library na magagamit mo kapag nagtatrabaho sa cookies sa pamamagitan ng JavaScript.

Ang cookie ay isang set ng data na nilikha ng isang Web server at ipinapadala sa tuwing maa-access ang server. Ang cookies ay iniimbak sa browser ng user. Karaniwan, ginagamit ang cookies upang: mag-imbak ng iba't ibang setting na natatangi sa user, pagpapatunay ng user, iba't ibang istatistika at iba pang katulad na bagay. At pag-uusapan natin ang tungkol sa pagtatrabaho sa cookies sa PHP sa artikulong ito.

Magsimula tayo sa pinakasimpleng bagay: pagsulat ng cookies sa browser ng user. Mayroong isang setcookie() function para dito:

Pagkatapos patakbuhin ang script, makikita mo ang cookie. Maaari mong tingnan ang mga ito sa sumusunod na paraan: alinman sa paghahanap sa mga setting ng iyong browser, o direktang maghanap sa iyong hard drive kung saan naka-imbak ang cookies ng iyong browser, o (ang pinakamadaling paraan) ilagay sa address bar: “javascript:document.cookie”. Ipasok lamang ang parehong tab kung saan mo pinatakbo ang script, dahil pinaghihiwalay ng mga browser ang cookies ng isang site mula sa isa pa.

Ngayon ang tanong ay lumitaw: "Paano ipakita ang cookies?". Ang mga ito ay ipinapakita gamit ang $_COOKIE array:

Bilang resulta, makikita mo ang "Value". Gaya ng nakikita mo, elementarya ang lahat.

At ngayon lutasin natin ang problemang ito sa iyo: kung ang user ay awtorisado sa site, pagkatapos ay kamustahin siya, kung hindi man ay ipakita ang form sa pag-login. Bukod dito, kung ang data na ipinasok sa form ay hindi tama, pagkatapos ay magpakita ng kaukulang babala. Mukhang ganito ang pagpapatupad:








Ang code ay medyo transparent, gayunpaman, ang artikulong ito ay maaari ding basahin ng mga nagsisimula, kaya tingnan natin ang code na ito nang mas detalyado. Una, sumulat kami ng dalawang function: ang isa ay upang ipakita ang form sa pag-login, at ang pangalawang function ay nagbabalik ng true kung ang data ay tama (iyon ay, kung ang login ay"Admin ", а пароль - "123456 "), иначе возвращает false . Обратите внимание на $_SERVER["SCRIPT_NAME"] . Данная константа содержит путь к текущему файлу. То есть мы хотим, чтобы обработчик формы (значение атрибута action ) был этот же файл.!}

Susunod na suriin namin: kung ang form ay isinumite (kung ang naipasa na "log" na halaga ay umiiral). Kung mayroon ito, ipinadala na ang form at sinimulan naming suriin ang natanggap na data. Pakitandaan na ipinapasa namin ang password sa pamamagitan ng md5() function upang hindi maimbak ang password sa malinaw na text sa cookie. Gamit ang check() function na sinusuri namin kung tama ang data. Kung tama ang data, pagkatapos ay isusulat namin ito sa cookie, kung hindi, ipapakita namin ang linyang: "Di-wastong data".

Susunod, magsisimula kaming mag-output ng mga HTML tag. Pakitandaan na hindi namin magagamit ang setcookie() function pagkatapos naming magkaroon ng output sa browser. Iyon ay, hindi mo maaaring, halimbawa, magpakita ng mga HTML na tag at pagkatapos ay gamitin ang setcookie() function, kung hindi, magkakaroon ng error. At, maniwala ka sa akin, maraming mga baguhan ang tumatanggap nito.

Pagkatapos i-output ang mga HTML tag, dumating tayo sa punto kung saan kailangan nating suriin ang cookie. Binabasa namin ang mga ito at pagkatapos ay suriin ang mga ito. Kung tama ang mga ito, binabati namin ang gumagamit, kung hindi, ipinapakita namin ang form sa pag-login.

Iyan ang buong script, tulad ng nakikita mo, maaari mong malaman ito. Gayunpaman, mayroon itong isang depekto dahil sa katotohanang naglalabas kami ng "Di-wastong data" bago ang tag na " ". Samakatuwid, ang aking araling-bahay: ayusin ang error na ito upang walang paglabag sa bisa ng HTML code. Ito ay napakasimpleng gawin, gayunpaman, ito ay magiging lubhang kapaki-pakinabang, dahil kailangan mong maunawaan ang code na ito, at, samakatuwid, alamin kung paano gumana sa cookies sa PHP. At kailangan mong gumamit ng cookies sa PHP nang madalas, at susubukan kong pagsamahin ang iyong kaalaman tungkol sa mga ito sa mga sumusunod na artikulo.

Malamang na sulit na magsimula sa kung ano ang cookies at kung ano ang kailangan nito. Ang cookie ay isang piraso ng data na maaaring maimbak sa panig ng user at magamit sa ibang pagkakataon upang ipatupad ang kanilang mga ideya.

Isipin natin na sa iyong website ay may pagkakataon kang pumili ng scheme ng kulay ng site. Napakaginhawang ipatupad ito sa cookies, dahil ang tema na pipiliin niya ay makikita lamang niya.

Ang cookies ay umiiral sa parehong PHP at jQuery. Samakatuwid, isasaalang-alang namin ang bawat kaso nang mas detalyado.

Mga detalyadong tagubilin para sa pagtatrabaho sa Cookies sa jQuery

1. Pagtatakda ng Cookies

Ngayon ay maaari naming subukang lumikha ng aming unang cookie:

$.cookie("cookie_name", "cookie_value", ( mag-e-expire: 3, path: "/", domain: "your_site.ru", secure: true ));

Anong meron dito?

“cookie_name” – pangalan ng cookie;

“cookie_value” – halaga ng cookie;

"mag-e-expire" - ang bilang ng mga araw na maiimbak ang cookies (sa aming kaso - 3 araw). Pagkatapos ng panahong ito, awtomatikong tatanggalin ang cookies;

“path” – pagkakaroon ng cookies sa site (sa aming kaso “/” - available sa buong site). Kung nais mo, maaari kang tumukoy lamang ng isang partikular na pahina o seksyon kung saan magiging available ang cookies, halimbawa, "/audio/rock";

“domain” – ang domain kung saan valid ang cookie. Kung mayroon kang isang subdomain, maaari mong tukuyin ito sa parameter na ito, halimbawa, "domain: "subdomain.your_site.ru"", at sa kasong ito ang cookie ay magagamit lamang sa domain na "subdomain.your_site.ru";

" secure" – isang parameter na nagsasaad na ang cookie ay dapat ipadala sa secure na https protocol.

Dito, hindi lahat ng mga parameter ay kinakailangan, at upang magtakda ng cookies, ang konstruksiyon na ito ay magiging sapat:

$.cookie("cookie_name", "cookie_value", ( mag-e-expire: 3, path: "/"));

2. Pagtanggap ng Cookie

Ang pagkuha ng cookies ay medyo simple;

$.cookie("cookie_name");

Maaaring italaga ang code na ito sa isang variable at gamitin para sa iyong mga pangangailangan:

var content = $.cookie("cookie_name"); if(content != null) ( alert("Cookie exists!"); ) else ( alert("Cookie does not exist!"); )

Sumang-ayon, ito ay napaka-maginhawa.

3. Pag-alis ng Cookies

Upang mag-alis ng halaga ng cookie, itakda ito sa "null":

$.cookie("cookie_name", null);

Ito, sa palagay ko, ang katapusan ng pagpapakilala sa pagtatrabaho sa Cookies sa jQuery. Ang kaalamang ito ay sapat na upang ipatupad ang iyong mga ideya.

Mga detalyadong tagubilin para sa pagtatrabaho sa Cookies sa PHP

Hindi tulad ng nakaraang opsyon para sa pagtatrabaho sa cookies, hindi mo kailangang magkonekta ng anuman dito.

1. Pagtatakda ng Cookies

Upang maitakda ang cookies sa PHP, gagamitin namin ang built-in na function na "setcookie":

Anong meron dito?

“cookie_name” – pangalan ng cookie;

“cookie_value” – halaga ng cookie;

“time()+3600” – buhay ng cookie sa mga segundo (sa aming kaso – 1 oras). Kung itinakda mo ang panghabambuhay sa "0", ang cookie ay tatanggalin sa sandaling isara ang browser;

“/” – ang seksyon kung saan available ang cookies (sa aming kaso, available sa buong site). Kung gusto mong limitahan ang seksyon kung saan magiging available ang cookies, pagkatapos ay palitan ang “/”, halimbawa, ng “/audio/rock”;

“your_site.ru” – ang domain kung saan magiging available ang cookie;

“true” – isang parameter na nagsasaad na available lang ang cookie sa pamamagitan ng secure na https protocol. Kung hindi, ang halaga ay hindi totoo;

“false” – isang parameter na nagsasaad na ang cookie ay available sa mga scripting language. Kung hindi - totoo (magagamit lamang sa pamamagitan ng http).

Dito, masyadong, hindi lahat ng mga parameter ay kinakailangan, at upang lumikha ng isang cookie, ang sumusunod na konstruksiyon ay sapat na:

Para sa kaginhawahan, maaaring itakda ang halaga ng cookie sa pamamagitan ng isang variable:

2. Pagtanggap ng Cookie

Upang makatanggap ng cookies, kailangan mong gamitin ang:

$_COOKIE["cookie_name"];

Upang alisin ang mga error dahil sa posibleng nawawalang cookies, gamitin ang:

Tulad ng sa nakaraang halimbawa ng pagtatrabaho sa Cookies sa jQuery, maaaring italaga ang cookies sa isang variable:

3. Pag-alis ng Cookies

Ang pag-alis ng cookies sa PHP ay kasingdali ng sa jQuery. Ang kailangan mo lang gawin ay itakda ang cookie sa isang walang laman na halaga at isang negatibong oras (oras na lumipas na):

Setcookie("cookie_name", "", time() - 3600);

Ang oras sa halimbawang ito ay isang oras na ang nakalipas, na sapat na para tanggalin ang cookies.

Gusto kong tandaan na sa ilang mga kaso, ang paggamit ng cookies ay higit na makatwiran kaysa sa paggamit ng database upang ipatupad ang kinakailangang paggana.

Huling na-update: 11/1/2015

Ang isa sa mga posibilidad para sa pag-save ng data sa javascript ay ang paggamit ng cookies. Upang gumana sa cookies, ginagamit ng object ng dokumento ang cookie property.

Para magtakda ng cookies, italaga lang ang document.cookie property ng isang string na may cookies:

document.cookie = "login=tom32;";

Sa kasong ito, nakatakda ang isang cookie na tinatawag na "login" at may value na "tom32". At sa karamihan ng mga browser maaari naming tingnan ito, alamin ang lahat ng impormasyon tungkol dito, at pagkatapos ay magagamit namin ito sa application:

Ang isang cookie string ay tumatagal ng hanggang anim na magkakaibang parameter: cookie name, value, expiration date, path, domain, at secure. Dalawang parameter lang ang ginamit sa itaas: ang pangalan ng cookie at ang halaga. Iyon ay, sa kaso ng linyang "login=tom32;" Ang cookie ay may pangalang login at ang halaga na tom32.

Ngunit ang naturang cookies ay may napakalimitadong habang-buhay: kung hindi mo tahasang itinakda ang petsa ng pag-expire, ang cookie ay tatanggalin kapag ang browser ay sarado. Maaaring mainam ang sitwasyong ito para sa mga kasong iyon kung saan kailangan mong tanggalin ang lahat ng impormasyon pagkatapos mong magtrabaho sa isang web application at isara ang browser. Gayunpaman, ang pag-uugali na ito ay hindi palaging angkop.

At sa kasong ito, kailangan nating itakda ang parameter ng pag-expire, iyon ay, ang petsa ng pag-expire ng cookies:

Ibig sabihin, mag-e-expire ang login cookie sa Lunes, Agosto 31, 2015 nang 00:00. Napakahalaga ng format ng parameter na mag-e-expire. Gayunpaman, maaari itong mabuo ng programmatically. Upang gawin ito, maaari naming gamitin ang toUTCString() na paraan ng Date object:

Var expire = bagong Petsa(); expire.setHours(expire.getHours() + 4); document.cookie = "login=tom32;expires=" + expire.toUTCString() + ";";

Sa kasong ito, mag-e-expire ang cookie sa loob ng 4 na oras.

Kung kailangan naming mag-install ng cookies para sa isang partikular na path sa site, maaari naming gamitin ang parameter ng path. Halimbawa, gusto naming magtakda ng cookies para lang sa path www.mysite.com/home:

Sa kasong ito, para sa iba pang mga landas sa site, halimbawa, www.mysite.com/shop, hindi magiging available ang cookies na ito.

Kung marami kaming domain sa aming site at gusto naming direktang magtakda ng cookies para sa isang partikular na domain, maaari naming gamitin ang parameter ng domain. Halimbawa, mayroon kaming subdomain sa aming website blog.mysite.com:

Document.cookie = "login=tom32;expires=Mon, 31 Ago 2015 00:00:00 GMT;path=/;domain=blog.mysite.com;";

Ang path=/ parameter ay tumutukoy na ang cookies ay magiging available para sa lahat ng mga direktoryo at path ng blog.mysite.com subdomain.

Ang huling parameter - ang secure ay tumutukoy sa paggamit ng SSL (SecureSockets Layer) at angkop para sa mga site na gumagamit ng https protocol. Kung nakatakda ang parameter na ito sa true , gagamitin lang ang cookies kapag nagtatatag ng secure na koneksyon sa ssl. Bilang default, mali ang parameter na ito.

Document.cookie = "login=tom32;expires=Mon, 31 Ago 2015 00:00:00 GMT;path=/;domain=blog.mysite.com;secure=true;";

Pagtanggap ng cookies

Para madaling makuha ang cookies mula sa browser, i-access lang ang document.cookie property:

Var expire = bagong Petsa(); expire.setHours(expire.getHours() + 4); document.cookie = "city=Berlin;expires="+expire.toUTCString()+";"; document.cookie = "country=Germany;expires="+expire.toUTCString()+";"; document.cookie = "login=tom32;"; document.write(document.cookie);

Tatlong cookies ang naitakda dito, at ipapakita sa amin ng browser ang lahat ng cookies na ito:

Hindi kasama sa nakuhang cookies ang mga nag-expire, path, domain, at secure na mga parameter. Bilang karagdagan, ang cookies mismo ay pinaghihiwalay ng mga semicolon, kaya kailangan mo pa ring gumawa ng ilang conversion upang makuha ang kanilang pangalan at halaga:

Var cookies = document.cookie.split(";"); para sa(var i=0; i