လွယ်လွယ်ပြောရရင် CSRF (Cross-Site Request Forgery) ဆိုတာ hacker က မင်းရဲ့ browser ကို အသုံးချပြီး မင်း မသိဘဲ၊ မင်း login ဝင်ထားတဲ့ website တစ်ခုမှာ လုပ်ရပ်တစ်ခု လုပ်ခိုင်းတဲ့ တိုက်ခိုက်နည်း ပါ။ Password ခိုးစရာ မလို၊ မင်းရဲ့ ကွန်ပျူတာထဲ ဝင်စရာ မလို — မင်း ကိုယ်တိုင် “ခွင့်ပြုထားတဲ့” အခြေအနေကို ပြန်သုံးတာ။

ဒီလို စဉ်းစားကြည့်ပါ။ မင်းသူငယ်ချင်းက မင်း နာမည်နဲ့ စာတစ်စောင် ရေးပြီး ဆရာ့ကို သွားပေးတယ်။ လက်ရေးက မင်းဟာ မဟုတ်ပေမယ့် နာမည်က မင်းနာမည် ဖြစ်နေတော့ ဆရာက ယုံသွားတယ်။ CSRF လည်း ဒီလိုပဲ — တောင်းဆိုမှု (request) ကို hacker က ရေးတယ်၊ ဒါပေမယ့် “လက်မှတ်” (login cookie) က မင်းဟာ ဖြစ်နေတော့ website က ယုံသွားတယ်။

တိုက်ခိုက်ပုံ အဆင့်ဆင့် ကြည့်ရအောင် —

မနက်က မင်း bank website မှာ login ဝင်ထားတယ်။ Tab ကို ပိတ်မထားဘူး၊ နောက်ထပ် tab တွေ ဖွင့်သုံးနေတယ်
တစ်နေရာရာကနေ hacker ပို့တဲ့ link တစ်ခု (ဒါမှမဟုတ် ကြော်ငြာပုံ တစ်ပုံ) ကို မင်း နှိပ်မိတယ်
အဲဒီ page ထဲမှာ ဒီလို ဝှက်ထားတယ်: <img src="https://bank.com/transfer?to=hacker&amount=500000">
မင်း browser က ပုံကို load လုပ်ဖို့ bank.com ကို request ပို့တယ်။ ပြဿနာက — browser က bank ရဲ့ login cookie ကို အလိုလို ပူးတွဲပို့ပေးတယ်
Bank server ကြည့်တော့ cookie မှန်တယ်၊ login ဝင်ထားတယ် → ငွေလွှဲမှု လုပ်ပေးလိုက်တယ်

မင်း ဘာမှ မနှိပ်လိုက်ဘူး၊ ဘာမှ မဖြည့်လိုက်ဘူး။ ပုံ တစ်ပုံ load ဖြစ်သွားရုံနဲ့ ငွေ ထွက်သွားတာ။ ကြောက်စရာ ကောင်းတယ်၊ ဟုတ်တယ်။

ဒီနည်းနဲ့ လုပ်လို့ ရတဲ့ မကောင်းမှုတွေ အများကြီး ရှိတယ် —

Bank account ကနေ ငွေလွှဲခိုင်းတာ
Email ရဲ့ password ကို ပြောင်းခိုင်းတာ
Social media account ကနေ post တင်ခိုင်းတာ၊ သူငယ်ချင်းတွေဆီ message ပို့ခိုင်းတာ
Online shop မှာ ပစ္စည်း မှာခိုင်းတာ

Developer တွေ ကာကွယ်တဲ့ နည်းလမ်းတွေ ရှိတယ် —

CSRF token — form တိုင်းမှာ လျှို့ဝှက် နံပါတ်တစ်ခု ထည့်ထားတယ်။ Hacker ရဲ့ page က ဒီ နံပါတ်ကို မသိတော့ request အတု လုပ်မရဘူး။ ဒါ အသုံးအများဆုံး နည်းလမ်း
SameSite cookie — browser ကို “ဒီ cookie ကို တခြား site ကနေ လာတဲ့ request မှာ မပို့နဲ့” လို့ မှာထားတာ။ SameSite=Lax ဒါမှမဟုတ် Strict လို့ set လုပ်ထားရင် အပေါ်က <img> လှည့်ကွက် အလုပ်မဖြစ်တော့ဘူး
အရေးကြီးတဲ့ လုပ်ရပ်တွေကို POST + confirm တောင်းတာ — ငွေလွှဲတာ၊ password ပြောင်းတာမျိုးကို GET request နဲ့ လုပ်လို့ မရအောင်၊ ပြီးတော့ “သေချာလား” လို့ တစ်ဆင့် မေးတာ

User အနေနဲ့ ကိုယ် လုပ်နိုင်တာတွေ —

Bank, email လို အရေးကြီးတဲ့ site တွေ သုံးပြီးရင် logout လုပ်ပါ။ Tab ဖွင့်ထားရုံနဲ့ cookie က သက်ဝင်နေတုန်းပဲ
မသိတဲ့ link, မသိတဲ့ attachment ကို စူးစမ်းစိတ် တစ်ခုတည်းနဲ့ မနှိပ်ပါနဲ့
Bank tab ဖွင့်ထားတုန်း တခြား မသိတဲ့ site တွေ မလျှောက်လည်ပါနဲ့ — browser တစ်ခုတည်းမှာ သီးခြား window ခွဲသုံးတာ ပိုလုံခြုံတယ်
Browser ကို update မှန်မှန် လုပ်ပါ — SameSite ကာကွယ်မှုက browser အသစ်တွေမှာမှ အပြည့်အဝ အလုပ်လုပ်တာ

စိတ်ဝင်စားစရာ တစ်ခုက CSRF ရဲ့ နာမည်အရင်းက “session riding” တဲ့ — သူများ စီးထားတဲ့ မြင်းကို ခိုးစီးတာ။ ပုံဖော်တာ တော်တော် ထိမိတယ်။ Hacker က မင်းရဲ့ login session ဆိုတဲ့ မြင်းကို မင်း မသိဘဲ ခိုးစီးသွားတာ။ ကိုယ် စီးထားတဲ့ မြင်းကို သူများ မစီးနိုင်အောင် — logout ဆိုတဲ့ ဇက်ကြိုးကို သုံးတတ်ဖို့ လိုတယ်။ 🙂