XSS သို႕မဟုတ္ Cross-Site Scripting - မူလေနရာတူညီျခင္း
မူလေနရာတူညီျခင္း
အဓိကအားျဖင့္ေတာ႕ အင္တာနက္ၾကည့္ေဆာဖ့္၀ဲေတြဟာ လက္ရွိေနရာ(စာမ်က္ႏွာ)ကေန အျပင္ဘက္တစ္ေနရာကို ခုန္ကူးရတဲ့ အခါမွာ လံုျခံဳမႈရရွိေစဖို႕အတြက္ Same origin policy ဆိုတဲ့နည္းလမ္းတစ္ခုကို အသံုးျပဳၾကပါတယ္။ JavaScript မွာအသံုးမ်ားပါတယ္။ ဒီနည္းလမ္းကို သံုးလိုက္တဲ့ အတြက္တစ္ေနရာကေန ေနာက္တစ္ေနရာကို သြားရေတာ႕မယ္ဆိုရင္ စိတ္ခ်လက္ခ် သြားလို႕ရပါတယ္။
ဒီနည္းလမ္းေလးရဲ႕ အလုပ္လုပ္ပံုေလးကို ေအာက္မွာ ဇယားေလးနဲ႕ ရွင္းျပထားပါတယ္။
တစ္ေနရာကေန ေနာက္တစ္ေနရာေျပာင္းအကူးအေျပာင္းမွာ
Domain ေတြအခ်င္းခ်င္း Prorocol ေတြအခ်င္းခ်င္း တူေနမွ အေျပာင္းအလဲကို ဆက္လုပ္ႏိုင္ေအာင္ လုပ္ေပးတဲ့နည္းျဖစ္ပါတယ္ …
ဒီနည္းေၾကာင့္ ေကာက္က်စ္စဥ္းလဲတဲ့ ၀က္ဘ္ဆိုက္တစ္ခုဟာ အင္တာနက္ၾကည့္ေဆာ့ဖ္၀ဲရဲ႕ ဖြင့္ထားတဲ့ အျခား window တစ္ခုအတြင္းမွာ ရွိေနတဲ့ အေရးၾကီးတဲ့ အခ်က္အလက္ေတြကို JavaScript အသံုးျပဳျပီး မခိုးယူႏိုင္မွာ ျဖစ္ပါတယ္ …. (ကြန္ပ်ဳတာထဲက အခ်က္အလက္ေတြကို ေျပာတာမဟုတ္ …)
Origin ဆိုတဲ့ အသံုးအႏႈံးက မူလစာမ်က္ႏွာ နဲ႕ ေနာက္ထပ္သြားရမယ့္ စာမ်က္ႏွာေတြၾကားမွာ
အသံုးျပဳထားတဲ့ domain name, protocol နဲ႕ port ေတြ တူေနရမယ္လို႕ ဆိုလိုပါတယ္။ အင္တာနက္ စာမ်က္ႏွာေတြၾကားမွာ အဲဒီအခ်က္ သံုးခ်က္တူညီမႈရွိေနတာကို မူလေနရာတူညီျခင္း Same Origin လို႕ဆိုလိုပါတယ္။ ဒီလိုတူေနမွ စာမ်က္ႏွာတစ္ခုကေန ေနာက္တစ္ခုေျပာင္းရတဲ့အခါ ပါသြားမယ့္ အခ်က္အလက္အခ်ဳိ႕ အတြက္ စိတ္ခ်ရတဲ့ သေဘာပါ။
အထက္က ဇယားေလးကို ေသေသခ်ာခ်ာ ေလ့လာလိုက္ရင္
..www.example.com/dir/page.html.. ဆိုတဲ့ေနရာကေန တျခားေနရာေတြကို သြားျပထားတာ ျဖစ္ပါတယ္ -
- အေပၚဘက္ႏွစ္ခုကေတာ႕ Same Origin ျဖစ္ျပီးလို႕ဆက္သြားလို႕ရျပီး
- ေအာက္ဘက္ကေလးခုမွာ protocol မတူတာ၊
- host (domain) အမည္မတူတာ၊
- port မတူတာ ေတြေၾကာင့္ အကူးအေျပာင္း မလုပ္ေပးတာ ျမင္ရမွာ ျဖစ္ပါတယ္ …
ဒီသေဘာေလးက ျပင္ပေလာကမွာလည္း အတူတူပါပဲ။ တစ္နယ္တည္းသားအခ်င္း၊ တစ္တန္းတည္းသား အခ်င္းခ်င္း၊ တစ္အိမ္တည္းသားခ်င္း၊ တစ္ေက်ာင္းတည္းထြက္ခ်င္း အစ ရွိတဲ့ မူလေနရာ (Same Origin) တူတဲ့သူ အခ်င္းခ်င္း စိတ္ခ်လက္ခ် ေပါင္းလို႕ရတဲ့ သေဘာအတိုင္းပါပဲ ….
(ခၽြင္းခ်က္ေလးေတြ ရွိႏိုင္တာကို ခဏဖယ္ျပီး စဥ္းစားတာပါ…)
Netscape ကသူ႕ရဲ႕ JavaScript မွာ အဲဒီနည္းလမ္းေလးကို စတင္လိုက္တဲ့အခ်ိန္ကစျပီးေတာ႕
အင္တာနက္အသံုးျပဳသူေတြကို ေကာက္က်စ္စဥ္းလဲတဲ့ website ေတြရဲ႕ အႏၱရာယ္ကေန အကာအကြယ္ေပးႏိုင္ေအာင္ အင္တာနက္ၾကည့္ ေဆာ့ဖ္၀ဲ အမ်ဳိးမ်ဳိးနဲ႕ အင္တာနက္အသံုးျပဳသူေတြအတြက္ေရးေပးရတဲ့ (client-side scripting) ပရိုဂရမ္ ဘာသာစကားအမ်ဳိးမ်ဳိးမွာ အလားတူနည္းလမ္း ေတြကို သံုးျပီး အကာအကြယ္ေပးလာ ၾကပါတယ္။
ေယဘုယ်အားျဖင့္ေတာ႕ Cross-site Scripting ဆိုတာဟာ အင္တာနက္ စာမ်က္ႏွာေတြရဲ႕ ေပ်ာ့ကြက္ေတြ၊ အားနည္းခ်က္ေတြကို မသမာသူေတြက ရွာေဖြျပီး သူတို႕ လိုခ်င္တဲ့ ေနရာ၊ လမ္းေၾကာင္းေပၚကို ေရာက္ေအာင္ ဆြဲေခၚသြားတဲ့ နည္းလမ္းေတြပါပဲ ….
မသမာသူတစ္ဦးဟာ အျခားေသာ အင္တာနက္ေနရာ (Domain) မ်ားမွာ တည္ရွိအသံုးျပဳေနတဲ့ စာမ်က္ႏွာမ်ားအတြင္းကို ေကာက္က်စ္ဆိုးရြားတဲ့ သေကၤတေတြ (scripts) ကို နည္းအမ်ဳိးမ်ဳိးနဲ႕ ရွာေဖြထည့္သြင္းျပီး ၊ စာမ်က္ႏွာတစ္ခုအတြင္းမွာပါတဲ့ အေရးၾကီးတဲ့ ကိုယ္ေရးကိုယ္တာအေၾကာင္းအရာေတြ၊ session cookie နဲ႕ အျခားေသာ အေၾကာင္းအရာေတြကို တစ္ဆင့္ျပီးတစ္ဆင့္ ရရွိ အသံုးျပဳသြားႏိုင္တယ္ ဆိုတာေလးကို ေသေသခ်ာခ်ာေလး နားလည္ထားဖို႕ အေရးၾကီးပါတယ္ …
အခုလို သိထားမယ္ဆိုရင္-
- လင့္ခ္ ေတြ႕တိုင္း ကလစ္လုပ္တာမ်ဳိး၊
- ပံု လွလွေလး (လွလွေလး :P) ေတြ႕လို႕ ကလစ္လုပ္တာမ်ဳိး ၊
- စိတ္၀င္းစားေလာက္စရာ စာေၾကာင္းေလးေတြ႕လို႕ ကလစ္လုပ္တာမ်ဳိးေတြကို လုပ္မိေတာ့မယ္ဆိုရင္ အနည္းနဲ႕ အမ်ား သတိထားေနမိေတာ႕မွာ ေသခ်ာပါတယ္ …..
ေအာက္က ဗီဒီယိုေလးကို ျပန္ၾကည့္လိုက္ပါဦးလား ...
ပိုျပီး သေဘာေပါက္သြားတာေပါ့ ….