နားလည်ထားရမယ့် အချက်
Cybersecurity Basics course က API key ကိုယ်တိုင်ကို ကာကွယ်ခြင်းကို ရှင်းပြပြီးသားပါ။ ဒါက လိုအပ်ပေမယ့် လုံလောက်တာတော့ မဟုတ်ပါဘူး။
ကာကွယ်ထားတဲ့ key တစ်ခုက design ညံ့ဖျင်းတဲ့ API ရှေ့မှာ ရှိနေသေးရင် real gap တွေ ကျန်ရှိနေဆဲပါ။ ဒီ lesson က key ကို ကျော်လွန်တဲ့ API security ကို ဖော်ပြပါမယ်။
Authorization ကို resource၊ action တစ်ခုချင်းစီအလိုက် စစ်ဆေးရမယ်—valid key က caller ကို အသိအမှတ်ပြု client ဖြစ်ကြောင်းသာ သက်သေပြတယ်၊ ဒီ access တိကျတိကျ ခွင့်ပြုထားလားဆိုတာ ဘာမှမပြောဘူး။
Rate limiting က abuse၊ overload၊ credential-guessing၊ cost spike တွေကို ကာကွယ်ပေးတယ်—ဒါပေမယ့် ဒါက defense တစ်ခုတည်းသာဖြစ်ပြီး တခြားအရာတွေကို အစားထိုးလို့ မရပါ။
Request validation က type, length, required field, allowed value တွေကို စစ်ဆေးတယ်။ Response data minimization ဆိုတာ caller တကယ်လိုအပ်တဲ့ field တွေကိုသာ ပြန်ပေးခြင်းပါ—password hash (သို့) internal token ဘယ်တော့မှ မပါစေဘဲ။
Webhook signature ကို တခြားနေရာက ဖော်ပြထားပါတယ်
webhook signature verification ရဲ့ တိကျတဲ့ mechanics အတွက် API Integration & Webhooks course ကို ကြည့်ပါ—ဒီ lesson ကတော့ ၎င်းပတ်ဝန်းကျင်ရှိ API security ရဲ့ ပုံသဏ္ဌာန်ကျယ်ကျယ်ကို အာရုံစိုက်ထားပါတယ်။
API SECURITY PIPELINE (BEYOND THE KEY)
--------------------------------------
CLIENT
|
v
AUTHENTICATED REQUEST (valid key/token)
|
v
API
+-- Authorization check (per resource/action)
+-- Rate limit check
+-- Input validation (type/length/required/allowed)
|
v
BUSINESS LOGIC
|
v
DATABASE
|
v
RESPONSE (minimized -- no password hash, no internal tokens)
|
v
CLIENTလက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
အောက်က function က response data minimization ကို တိုက်ရိုက် ပြသတယ်—database query တစ်ခုကနေ ထွက်လာတဲ့ raw object ကိုယူပြီး ကြည်လင်ပြီးသား version၊ ဘယ်field ဖယ်ရှားခံရလဲဆိုတဲ့ list ကို ပြန်ပေးတယ်။
known-sensitive list နဲ့ နှိုင်းယှဉ်ခြင်း
passwordHash, internalToken လို field name တွေကို input ရဲ့ key တိုင်းနဲ့ နှိုင်းယှဉ်တယ်—ကိုက်ညီတာ ဖယ်ရှားပြီး မှတ်တမ်းတင်တယ်။
ကျန်တာအားလုံး ဖြတ်သန်းသွားခြင်း
sensitive list ထဲ မပါတာအားလုံးက minimized object ထဲ မပြောင်းလဲဘဲ ဖြတ်သန်းသွားတယ်။
passwordHash, internalToken, internal note ပါတဲ့ raw user record တစ်ခုနဲ့ run ကြည့်ပါ—minimized output ထဲမှာ legitimate field သုံးခုသာ ကျန်တယ်။
serialize မလုပ်ခင် ဒါကို ထားပါ
real API တစ်ခုမှာ ဒီလို strip-list ကို response serialize မလုပ်ခင် ချက်ချင်းထားသင့်တယ်—sensitive field အသစ်တစ်ခု ယိုစိမ့်မသွားအောင်ပါ။
API Security Checklist (Key ထက် လွန်တဲ့)
အတူတူ စမ်းရေးကြည့်မယ်
function minimizeResponse(apiResponse) {
const sensitiveFields = ["passwordHash", "internalToken", "internalNotes", "securityAnswer"];
const removed = [];
const minimized = {};
for (const [key, value] of Object.entries(apiResponse)) {
if (sensitiveFields.includes(key)) {
removed.push(key);
} else {
minimized[key] = value;
}
}
return { minimized, removedFields: removed };
}
const rawUserResponse = {
id: 42,
username: "maria",
email: "maria@example.com",
passwordHash: "$2b$10$abcdefghijklmnopqrstuv",
internalToken: "svc_9f8e7d6c5b4a",
internalNotes: "flagged for manual review 2026-01-02",
};
const result = minimizeResponse(rawUserResponse);
console.log(JSON.stringify(result, null, 2));{
"minimized": {
"id": 42,
"username": "maria",
"email": "maria@example.com"
},
"removedFields": [
"passwordHash",
"internalToken",
"internalNotes"
]
}၅ မိနစ် စမ်းကြည့်
rate-limit simulation တစ်ခု ထပ်ထည့်ကြည့်ပါ—client တစ်ဦးရဲ့ request timestamp list ကိုယူပြီး 10-second window မည်သည့်အတွင်းမဆို request 5 ခုထက် ကျော်သွားလားဆိုတာ ပြန်ပေးမယ့် function သေးသေးလေး တစ်ခု ရေးကြည့်ပါ။ ရလဒ်ကို minimizeResponse ရဲ့ output နဲ့ ပေါင်းစပ်ပြီး request/response cycle အပြည့်အစုံကို စိတ်ကူးကြည့်ပါ။
သတိလေးတစ်ချက်
"valid API key ရှိတယ်" ဆိုတာနဲ့ "ဒီ resource (သို့) action အတွက် authorized ဖြစ်တယ်" ကို တူတူတစ်ခုတည်းလို့ ယူဆခြင်း။
caller တကယ်လိုအပ်တဲ့ field တွေကိုသာ ရှင်းရှင်းလင်းလင်း ရွေးမယ့်အစား database row တစ်ခုလုံးကို API response အဖြစ် ပြန်ပေးခြင်း။
OWASP API Security Project — Digital Privacy & Modern Security