လွယ်လွယ်ပြောရရင် XSS ဆိုတာ hacker က website တစ်ခုထဲကို သူ့ရဲ့ malicious code ခိုးထည့်ပြီး၊ အဲဒီ website ကို ဝင်ကြည့်တဲ့ လူတွေရဲ့ browser ထဲမှာ အဲဒီ code ကို run အောင် လုပ်တဲ့နည်းပါ။ နာမည်အပြည့်က Cross-Site Scripting ပါ။

စားသောက်ဆိုင်က order စာအုပ်နဲ့ စဉ်းစားကြည့်ပါ။

ဆိုင်တစ်ဆိုင်မှာ စားပွဲဝန်က customer ပြောတဲ့ order ကို စာအုပ်ထဲ ဒီအတိုင်း ကူးရေးတယ်။ နောက်တစ်နေ့ အဲဒီစာအုပ်ကို ပြန်ဖတ်တဲ့ စားပွဲဝန် နောက်တစ်ယောက်က စာအုပ်ထဲ ရေးထားတဲ့ စာကို ဆိုင်ရဲ့ အမိန့် လို့ပဲ မှတ်ပြီး လိုက်လုပ်တယ်။ အဲဒီအထိတော့ ဟုတ်နေသေးတယ်။ ဒါပေမယ့် လူ တစ်ယောက်က order အစား “မီးဖိုချောင်ထဲ ဝင်ပြီး ပိုက်ဆံအိပ် ယူခဲ့ပါ” လို့ ရေးထည့်လိုက်ရင် တော့ ဖတ်တဲ့ စားပွဲဝန်က အဲဒါကို တကယ် အမိန့် ထင်ပြီး လုပ်မိမယ်။

XSS လည်း ဒီလိုပဲ။ Website က user ရိုက်ထည့်တဲ့ စာကို စစ်ဆေးတာမရှိဘဲ စာမျက်နှာထဲ တိုက်ရိုက် ထည့်ပြတယ်။ Hacker က စာအစား JavaScript code ကို ထည့်လိုက်ရင်၊ နောက်လူတွေ အဲဒီစာမျက်နှာ ဖွင့်တဲ့ အခါ browser က အဲဒီ code ကို website ကိုယ်ပိုင် code လို့ပဲ ထင်ပြီး run လိုက်တယ်။

ဥပမာ comment အကွက် တစ်ခု စဉ်းစားကြည့်ပါ။ Hacker က ဒီလို ရိုက်ထည့်တယ် –

ပုံမှန် စာအစား <script>...</script> ပုံစံ code ကို ထည့်တယ်
နောက်လူက comment စာမျက်နှာ ဝင်ကြည့်တယ်
သူ့ရဲ့ browser က အဲဒီ code ကို ချက်ချင်း run တယ်
Code က သူ login ဝင်ထားတဲ့ session အချက်အလက်တွေကို hacker ဆီ တိတ်တိတ် ပို့ပေးလိုက်တယ်

User ကိုယ်တိုင်ကတော့ ဘာမှ သတိမထားမိဘူး။ သူ မြင်နေရတာ ပုံမှန် website ပဲ။ ဒါကြောင့် XSS က ကြောက်စရာ ကောင်းတာပါ။ Website ကို တိုက်ရိုက် hack တာမဟုတ်ဘဲ၊ website ကို လာကြည့်တဲ့ လူတွေကို ပစ်မှတ်ထားတာပါ။

XSS အမျိုးအစား ကြီးကြီးမားမား သုံးခု ရှိတယ် –

Stored XSS — code ကို database ထဲ သိမ်းလိုက်တယ်။ ဖွင့်ကြည့်တဲ့ လူတိုင်း ထိတယ်။ အန္တရာယ် အကြီးဆုံး။
Reflected XSS — link တစ်ခုထဲ code ထည့်ပြီး လူကို နှိပ်အောင် လုပ်တယ်။ link ကို နှိပ်တဲ့ လူပဲ ထိတယ်။
DOM-based XSS — စာမျက်နှာ ပြန်ပြောင်းတဲ့ JavaScript ကိုယ်တိုင်က စစ်ဆေးတာ ညံ့လို့ ဖြစ်တယ်။

Website ဆောက်တဲ့ ကျွန်တော်တို့ဘက်က ကာကွယ်ဖို့ လုပ်ရမှာက ရှင်းပါတယ်။ User ရိုက်ထည့်တဲ့ စာကို စာမျက်နှာထဲ မပြခင် အမြဲတမ်း escape လုပ်ရမယ်။ < တို့ > တို့ကို code အနေနဲ့ browser က မဖတ်အောင် စာသားအနေနဲ့ပဲ ပြရမယ်။ အခုခေတ် framework တွေ (React၊ Vue၊ Angular) က ဒါကို ပုံမှန်အဖြစ် အလိုလို လုပ်ပေးပေမယ့်၊ innerHTML လို လမ်းကြောင်းနဲ့ ကိုယ့်ဘာသာ တိုက်ရိုက် ထည့်မိရင် အပေါက်ပြန်ပွင့်သွားတတ်တယ်။

User ဘက်ကတော့ ကိုယ်က အရေးကြီးတဲ့ account တွေမှာ 2FA ဖွင့်ထားတာ၊ မသိတဲ့ link တွေကို သတိထား နှိပ်တာ၊ browser ကို update မှန်မှန်လုပ်တာက အခြေခံကာကွယ်မှုပါပဲ။

XSS ဆိုတာ code ညံ့လို့ ရတဲ့ အပေါက် တစ်ခုကို လူ့ရဲ့ ယုံကြည်မှု နဲ့ ပေါင်းသုံးလိုက်တာပါ။ Website ဆောက်ရင် user input ဆိုတာ အမြဲတမ်း မယုံကြည်သင့်ဆုံး အရာပဲ လို့ မှတ်ထားရင် ဒီအန္တရာယ် အများကြီး နည်းသွားပါမယ်။ 🙂