this site the web

784.. Cookies ဆိုသည္မွာ..[ 2.7.10 ]

 

Cookies ဆိုတာ ကိုယ့္စက္ထဲမွာ လာသိမ္းထားတဲ့ Text File ေတြပဲလို႔ အမ်ားအားျဖင့္ သိထားၾကပါတယ္။ Website ေတြရဲ႕ အရွင္သခင္ေတြ ျဖစ္တဲ့ Web Server ေတြရဲ႕ ေတာင္းဆိုခ်က္အရ ကိုယ့္စက္ရဲ႕ Internet Browser ေတြက ကိုယ့္စက္ထဲမွာ ဖန္တီးလိုက္တဲ့ Text Files ေတြ ဆိုပါေတာ့။ ကိုယ့္စက္ထဲမွာ Browser က ေဆာက္လိုက္ၿပီ ဆိုတာနဲ႔ Request လုပ္တဲ့ WebServer အေနနဲ႔ အဲဒီ Text Files (Cookies) ေတြထဲမွာ ရွိတဲ့ Content ေတြကို Read လို႔လည္း ရသလို Write လို႔လည္း ရသြားပါတယ္။ ကိုယ့္စက္ထဲကို က်ဴးေက်ာ္ ဝင္ေရာက္လာတာ ဆိုေတာ့ ဘဝင္မက်စရာ ေကာင္းတယ္၊ အႏၲရာယ္ရွိတယ္လို႔ ထင္စရာ ရွိပါတယ္။ ဒါေပမယ့္ အတိုင္းအတာ တစ္ခုအထိ လံုၿခံဳစိတ္ခ် ႏိုင္ဖို႔ Cookies ေတြအတြက္ ကန္႔သတ္ခ်က္ေတြကေတာ့ ရွိေနပါတယ္။ အဲဒီ ကန္႔သတ္ခ်က္ေတြကေတာ့

  • Web Servers ေတြ အေနနဲ႔ သူဒိုမိန္းနဲ႔ သူပဲ Cookies ေတြကို Access လုပ္ႏိုင္ပါတယ္။ Web Server က Cookie အတြက္ Request လုပ္လိုက္ၿပီ ဆိုတာနဲ႔ Internet Browser က ဘယ္ Domain အတြက္ ဆိုတာ တစ္ခါတည္း သတ္မွတ္လိုက္ပါတယ္။ အဲဒီ Domain ဆိုတဲ့ ေနရာမွာလည္း Domain လည္း ျဖစ္ႏိုင္သလို Sub Domain လည္း ျဖစ္ႏိုင္ပါတယ္။ Web Server ရဲ႕ Request ေပၚ မူတည္တာေပါ့။ သူက Domain နဲ႔ Request လုပ္မယ္ဆိုရင္ Browser က Domain နဲ႔ မွတ္ထားပါတယ္။ Sub Domain နဲ႔ လုပ္မယ္ဆိုရင္ Sub Domain နဲ႔ မွတ္ထားပါလိမ့္မယ္။ ဒါေပမယ့္ google.com က cookie ကို Mozilla.com ဖတ္လို႔ မရသလို Mozilla.com က Cookie ကို google.com က ဖတ္လို႔ မရပါဘူး။

  • Cookie ေတြက HTTP Protocol ကေန လာတာပါ၊ ဒီေတာ့ HTTP ရဲ႕ ကန္႔သတ္ခ်က္အရ 4096 Bytes (4KB) ထက္ ႀကီးလို႔ မရပါဘူး။

  • Domain တစ္ခုျခင္းစီအလိုက္ Cookie အေရအတြက္ ခြင့္ျပဳမႈ ပမာဏမွာလည္း ကန္႔သတ္ခ်က္ ရွိပါတယ္။ Browser ေပၚ မူတည္ၿပီး ခြင့္ျပဳတဲ့ အေရအတြက္ ကြာျခားပါတယ္။ သို႔ေသာ္လည္း အမ်ားအားျဖင့္ အခု ၂၀ သတ္မွတ္ထားၾကပါတယ္။ Domain တစ္ခုကို Cookie အခု ၂၀ ခြင့္ျပဳတယ္ ဆိုပါေတာ့။ အဲဒီလို ကန္႔သတ္ထားရျခင္း ရည္ရြယ္ခ်က္က Domain ေတြအေနနဲ႔ ကိုယ့္စက္ထဲမွာ Cookie ေတြ အမ်ားႀကီးထည့္ၿပီး Hard Disk Space ကို မျဖဳန္းေစခ်င္လို႔ပါ။

  • ကိုယ့္စက္ထဲက Hard Disk မွာ မွတ္ခြင့္ရွိတဲ့ Cookie အေရအတြက္ စုစုေပါင္းမွာလည္း ကန္႔သတ္ခ်က္ရွိပါတယ္။ အဲဒီ အကန္႔အသတ္ကလည္း Browser အလိုက္ ကြာျခားတယ္ ဆိုေပမယ့္ အမ်ားအားျဖင့္ အခု ၃၀၀ သတ္မွတ္ထား တတ္ပါတယ္။ စုစုေပါင္း ကန္႔သတ္ခ်က္ထက္ ေက်ာ္သြားရင္ေတာ့ အေဟာင္းဆံုး Cookie ေတြကို ဖ်က္ပစ္ပါလိမ့္မယ္။ အသစ္အသစ္ေတြ ဝင္လာတယ္ အေရအတြက္ ကန္႔သတ္ခ်က္ထက္ ေက်ာ္လာတယ္ဆိုရင္ အေဟာင္း အေဟာင္း ေတြကို ဖ်က္ပစ္မယ္ ဆိုပါေတာ့။


Cookies ေတြမွာ Expired Date (သက္တမ္းကုန္တဲ့ ေန႔) ရွိပါတယ္။ အဲဒီလို Expired Date သတ္မွတ္ထားတဲ့ အတြက္ Browser အေနနဲ႔ Web Server က ဒီေန႔ေတြ ေက်ာ္သြားရင္ မလိုေတာ့ဘူးဆိုတာ သိၿပီး မလိုတာေတြကို ဖ်က္ႏိုင္ပါတယ္။ အကယ္၍ Expired Date မပါဘူး ဆိုရင္ေတာ့ Server နဲ႔ ဆက္သြယ္မႈ ရပ္တန္႔သြားတာနဲ႔ ဖ်က္ပစ္ပါလိမ့္မယ္။ အဲဒီလို Server နဲ႔ ဆက္သြယ္မႈ ရပ္တန္႔တယ္ဆိုတာ Window ကို ျဖစ္ျဖစ္ Browser ရဲ႕ Tab ေတြကို ျဖစ္ျဖစ္ အသံုးျပဳသူက လံုးဝပိတ္ပစ္လိုက္တာကို ဆိုလိုပါတယ္။ အဲဒီလို ပိတ္ၿပီဆိုတာနဲ႔ Date မပါတဲ့ Cookies ေတြကို Broswer က ဖ်က္ၿပီးသားပဲလို႔ အဓိပၸါယ္ရပါတယ္။ အဲဒီလို Expired Date မပါတဲ့ Cookies ေတြကို Session Cookies လို႔လည္း ေခၚတတ္ပါတယ္။ အမ်ားအားျဖင့္ temporary settings (ယာယီ သတ္မွတ္ခ်က္မ်ား) ေတြကို သိမ္းတဲ့ေနရာမွာ အသံုးမ်ားပါတယ္။

Cookies ကို ဘယ္လိုသံုးလဲ

Cookies ေတြ ဖန္တီးတယ္ဆိုတာ User Level မဟုတ္ပါဘူး။ Technical Level ပါ။ Cookies ကို ဘယ္လံုးသံုးလဲ သိႏုိင္ဖို႔ Technical Level ကို ေလ့လာရမွာ ျဖစ္ပါတယ္။ Cookies ေတြက HTTP Protocol ေတြကတစ္ဆင့္ အေပးအယူ လုပ္ရပါတယ္။ HTTP Protocol ကို Browsers ေတြအေနနဲ႔ Server ေတြဆီကို ဖိုင္ေတြ လွမ္းယူတဲ့ေနရာ လွမ္းပို႔တဲ့ ေနရာေတြမွာ သံုးပါတယ္။ Cookie တစ္ခုကို Server က Request လုပ္ၿပီးၿပီ Browser ကလည္း ေဆာက္ၿပီးၿပီ ဆိုတာနဲ႔ Browser က Cookie မွာ သတ္မွတ္ထားတဲ့ Domain ေတြနဲ႔ သက္ဆိုင္တဲ့ Web Pages ေတြမွာ အေျပာင္းအလဲေတြ ရွိၿပီဆိုတိုင္း Cookies ေတြကို Server ဆီ လွမ္းလွမ္းပို႔ ေပးေနမွာ ျဖစ္ပါတယ္။ ေအာက္မွာ ျပထားတဲ့ snippet ကေတာ့ Server က request လုပ္တဲ့ နမူနာ Cookie တစ္ခုပါ။ (အဲဒီ Snippet က HTTP Response ရဲ႕အစိတ္အပိုင္းထဲမွာ ပါပါတယ္)

Set-Cookie: Name=content data; expire=Fri, 21-Dec-2010 23:59:59 GMT; path=/; domain=.exam

အဲဒီ စာေၾကာင္းေလးကို ေလ့လာၾကည့္ရေအာင္

Set-Cookie: Browser ကို Cookie တစ္ခု အသစ္လုပ္လို႔ေၾကာင္း Server က အသိေပး အေၾကာင္းၾကားတဲ့ Command ပါ။

Name: Cookie ရဲ႕ အမည္ပါ။ Domain တစ္ခုျခင္းစီမွာ Cookies ေတြ အမ်ားႀကီး ေဆာက္ခ်င္ရင္ေတာ့ (အခုႏွစ္ဆယ္ အထိရပါတယ္) နာမည္ေတြ မတူေအာင္ ေပးရမွာ ျဖစ္ပါတယ္။ အဲဒီလို ေပးထားမွသာ Browser အေနနဲ႔ ခြဲျခားၿပီး သိမ္းထားလို႔ ရမွာ ျဖစ္ပါတယ္။ =content data ဆိုတဲ့ ေနရာမွာေတာ့ cookie ထဲမွာ ပါမယ့္ Data ေတြကို ထည့္တဲ့ေနရာပါ။ data ေတြ ဆိုတဲ့ေနရာမွာ Text String ေတြလည္း ျဖစ္ႏိုင္သလို number ေတြလည္ ျဖစ္ႏိုင္ပါတယ္။ 4KB ထက္ေတာ့ ေက်ာ္လို႔ မရဘူးေပါ့။

expires= ဒါကေတာ့ expiration date ကို သတ္မွတ္တဲ့ command ပါ။ expiration date ရဲ႕ Format ကေတာ့”Wdy, DD-Mon-YYYY HH:MM:SS GMT” ဆိုတဲ့ ပံုစံပါ။ expiration date ရဲ႕ Format က ရွည္လွ်ား ေထြျပားတယ္ ဆိုေပမယ့္ Programming Language ေတြ အေနနဲ႔ အဲဒီအတြက္ လြယ္လြယ္ ေရးလို႔ရေအာင္ ဖန္တီးေပးထား တတ္ၾကပါတယ္။ အဲဒီ expiration date ကိုၾကည့္ၿပီး Browser က အလို အေလ်ာက္ ဖ်စ္ပစ္မွာ ျဖစ္ပါတယ္။

domain and path: အဲဒီ အပိုင္းကိုေတာ့ ဒီထက္ပိုၿပီး ထဲထဲဝင္ဝင္ ရွင္းလင္းျပဖို႔ လိုပါလိမ့္မယ္။ Domain ဆိုတာကေတာ့ Cookie အေနနဲ႔ Active ျဖစ္မယ့္ Domain ကို သတ္မွတ္ေပးတာပါ။ အကယ္၍ Domain က ads.google.com ဆိုရင္ Cookie က အဲဒီ ဒိုမိန္းတစ္ခုတည္း အတြက္ Active ျဖစ္မွာ ျဖစ္ၿပီး၊ အကယ္၍ google.com ဆိုရင္ေတာ့ google.com နဲ႔ ပတ္သက္တဲ့ server ေတြ subdomains ေတြ Cookie က Active ျဖစ္မွာ ျဖစ္ပါတယ္။ google.com ဆိုရင္ google.com, ads.google.com, mail.google.com စသည္ျဖင့္ အကုန္လံုးအတြက္ active ျဖစ္မွာကို ဆိုလိုပါတယ္။

The path: path ဆိုတာကေတာ့ browser အေနနဲ႔ Cookie ကို ျပန္ပို႔ရမယ့္ domain ရဲ႕ path ပါ။ /images/ လို႔ သတ္မွတ္ေပးထားမယ္ domain အေနနဲ႔ ads.google.com လို႔ သတ္မွတ္ထားရင္ ads.google.com/images/ ကို cookie ပို႔ရမွာ ျဖစ္ပါတယ္။ အကယ္၍ ‘/’ လို႔သာ သတ္မွတ္ ထားရင္ေတာ့ location ကို ၾကည့္စရမလိုေတာ့ပဲ domain ကိုပဲ တန္းပို႔မွာ ျဖစ္ပါတယ္။

Cookie ကို ဘယ္လိုဖန္တီးလဲ

ဒီအပိုင္းမွာေတာ့ Cookie ကို ဘယ္လို ဖန္တီးလဲဆိုတာ ေလ့လာၾကည့္ပါမယ္။

PHP

PHP ကို သံုးၿပီး Cookie ေတြ ဖန္တီးေတာ့မယ္ ဆိုရင္ အေရးအႀကီးဆံုး အခ်က္က browser ဆီကို Cookies ေတြ မပို႔ခင္ အကုန္ေသေသခ်ာခ်ာ သတ္မွတ္ေပးဖို႔ လိုတာပါပဲ။
<?php
/***Creating a cookie***/
$name = 'clientname';
$value = 'Peter Griffin';
//time() gives current time in seconds, and we add 60 seconds * 30 = 30 minutes
//so this cookie expires in 30 minutes.
//You may notice that the expire date is in seconds, PHP translates this to
//the correct format internally!
$expireDate = time() + 60 * 30;
$path = '/example/';
$domain = 'test.envato.com';
$secure = false; //only transmit the cookie if a HTTPS connection is established
$httponly = true; //make cookie available only for the HTTP protocol (and not for JavaScript)
setcookie( $name, $value, $expireDate, $path, $domain, $secure, $httponly);

<html>
.... //all content etc goes here
?>

အေပၚမွာ ေရးထားတဲ့ php code ေတြကို ၾကည့္မယ္ဆိုရင္ အေပၚမွာ ရွင္းျပထားၿပီးသား ျဖစ္တာမို႔ နားလည္ဖို႔ လြယ္ပါလိမ့္မယ္။ ဒါေပမယ့္ $secure ဆိုတာနဲ႔ $httponly ဆိုတာေတာ့ ပါလာပါတယ္။ $secure ဆိုတာကေတာ့ https connection မွာပဲ သံုးပါလို႔ Force လုပ္ထားတာ ျဖစ္ပါတယ္။ httponly ဆိုတာကေတာ့ cookies ေတြကို HTTP Protocol တစ္ခုတည္းကပဲ သံုးလို႔ရမယ္လို႔ သတ္မွတ္တာပါ။ အဲဒီ အဓိပၸါယ္က client-side languages ေတြ ျဖစ္တဲ့ Javascript တို႔ VBScript တို႔က Cookie ကို Access လုပ္လို႔မရေအာင္ ကန္႔သတ္ထားပါတယ္။ အဲဒီလို သတ္မွတ္ျခင္း အားျဖင့္ Cross Site Scripting ရဲ႕ အႏၲရာယ္ကိုလည္း ကာကြယ္ၿပီးသား ျဖစ္သြားေစပါတယ္။ ကိုယ့္အေနနဲ႔ Javascript စသည္တို႔နဲ႔ Cookie ကို editing လုပ္ဖို႔ အစီအစဥ္ မရွိဘူးဆိုရင္ true ပဲ ေပးထားသင့္ပါတယ္။ httponly ကို true ေပးလိုက္တယ္ဆိုတာနဲ႔ https ကို ပိတ္လိုက္တယ္လို႔ အဓိပၸါယ္မရပါဘူး။ အဲဒီေနရာမွာ နားလည္မႈ လြဲမွားႏုိင္ပါတယ္။ https က $secure နဲ႔သာ ဆိုင္ပါတယ္။ အေပၚမွာ ျပထားကို ခ်ဳံ႕ၿပီးေရးမယ္ ဆိုရင္
<?php
setcookie( 'clientname', 'Peter Griffin', time()+60*30, '/example/', 'test.envato.com', false,true);
?>

Cookie ကိုေတာ့ ဖန္တီးလို႔ ၿပီးပါၿပီ။ ဘယ္လို ျပန္ဖတ္မလဲ။ PHP မွာေတာ့ ေတာ္ေတာ္လြယ္တယ္လို႔ ေျပာလို႔ရမယ္ ထင္ပါတယ္။ $_COOKIE[] ဆိုတဲ့ command ကို သံုးႏိုင္ပါတယ္။
<?php
$cookieValue = $_COOKIE['name of the cookie'];
?>

အဲဒီ $_COOKIE က ရလာတဲ့ Variable ကို အျခား variable ေတြလိုပဲ သံုးလို႔ရပါတယ္။

အကယ္၍ expiration date, path, domain တို႔ကို ျပန္ျပင္ခ်င္တယ္ ဆိုရင္ cookie ကို နာမည္တူေပးၿပီး ျပင္လို႔ ရပါတယ္။ setcookie() ကိုပဲ သံုးရံုပါပဲ။

Cookies ကို ဘာေၾကာင့္သံုးလဲ
Cookies ေတြကို NetScape က ဖန္တီးခဲ့တာပါ။ ပထမ မူလ Cookies ေတြကို သံုးရျခင္း ရည္ရြယ္ခ်က္ကေတာ့ online shop ေတြမွာ shopping cart ေတြ ဖန္တီးဖို႔ ျဖစ္ပါတယ္။

အခုအခ်ိန္မွာေတာ့ Cookies ကို ရည္ရြယ္ခ်က္ မ်ုိးစံုအတြက္ သံုးေနၾကပါၿပီ။ user နဲ႔ ပတ္သက္တဲ့ settings ေတြ ျဖစ္တဲ့ name, language, location, screen size စတာေတြကို သိမ္းထားခိုင္းလို႔ ရပါတယ္။ အဲဒီလို သိမ္းထားျခင္းျဖင့္ ေနာက္တစ္ႀကိမ္ client ေတြ ကိုယ့္ဆိုက္ကို ျပန္သံုးတဲ့ အခါမွာ မွတ္မိေနေစတဲ့အတြက္ Service ကို improve လုပ္ၿပီးသား ျဖစ္ေစပါတယ္။

Cookies သံုးရင္ ဘာေတြလိုက္နာသင့္လဲ

  • Cookie ထဲမွာ sensitive ျဖစ္တဲ့ အေရးႀကီးတဲ့ Data ေတြ မထည့္ပါနဲ႔။ အသံုးျပဳသူေတြအေနနဲ႔ အင္တာနက္ကေဖးလို Public ေနရာေတြ သံုးႏုိင္ပါတယ္။ အဲဒီလို သံုးတဲ့အခါ Client ရဲ႕ အေရးပါတဲ့ အခ်က္အလက္ေတြ က်န္လို႔ မျဖစ္ပါဘူး။

  • cookies ေတြကလာတဲ့ data ေတြကို ဘယ္ေတာ့မွ မယံုပါနဲ႔။ strings နဲ႔ numbers ေတြကို အၿမဲ filter လုပ္ထားပါ။ attacker ေတြ အေနနဲ႔ malicious data ေတြကို cookie ေတြနဲ႔ အတူ ထည့္ေပးတတ္လို႔ပါ။

  • expiration data ကို ေသေသခ်ာခ်ာ သတ္မွတ္ေပးပါ။ အဲဒီလို သတ္မွတ္တဲ့ ေနရာမွာလည္း client ရဲ႕ စက္ထဲမွာ အႏွစ္အႏွစ္ အလလ သိမ္ထားခိုင္းတာမ်ဳိး မျဖစ္ပါေစနဲ႔။

  • secure တို႔ httponly တို႔ ကို သံုးေပးပါ။ အကယ္၍ ကိုယ္က HTTPS ကိုသံုးလို႔ရတယ္ ဆိုရင္ HTTPS ကို သံုးႏိုင္ဖို႔ secure ကို enable လုပ္ေပးပါ။


Ref:.myanmartutorials

Labels:

Print ပဲထုပ်ပါ..pdf ထုပ်လျှင်.ဖောင့်လွဲနေလိမ့်မယ်



မာတိကာ ၁ မာတိကာ ၂ မာတိကာ ၃ မာတိကာ ၄ မာတိကာ ၅

0 - ဦး မှတ်ချက်ပေးထားပါသည်

Post a Comment

KKZ Myanmar Unicode Keyboard

Mone Tine On Android

►Version 1.1

►Version 1.0

MoneTineKeyboard

Like လုပ်ထားနိုင်ပါတယ်

Mone Tine Knowledge Bank

Labels

အောက်ကကြေငြာလေးကလစ်ပေးပါဦး

Usage Policies

သင်၏ Facebook  တွင် ဖတ်နိုင်ရန် LIKE လုပ်ခဲ့ပါ..
( အမှန်ခြစ် ပေါ်နေပြီး LIKE ပြီးသားပါက CLOSE ကိုသာနှိပ် ပိတ်ပါ )

ကျေးဇူးတင်ပါတယ် မုန်တိုင်း

ကျန်းမာကြပါစေ