ඔබේ API ස්කෑනර් එක හරිත ලකුණක් පෙන්වුවා නම්, එය සැබැවින්ම ආරක්ෂිත කියලා හිතන්න එපා. බොහෝ වෙලාවට Broken Object-Level Authorization (BOLA) හෝ IDOR ලෙස හැඳින්වෙන දෝෂයක්, ලොග්‑ඉන් වී ඇති පරිශීලකයකුගේ සාමාන්ය ඉල්ලීමක් පමණක් වුවත්, වෙනත් කෙනෙකුගේ දත්ත පෙන්වයි. මේ වගේ දෝෂයක් අඩුම තරමේ පරික්ෂා නොකළහොත්, ඔබේ පද්ධතියේ සියලුම පරිශීලක තොරතුරු ලීක් වීමට ඉඩ සලසයි.
මෙම ලිපියේ අරමුණ, BOLA දෝෂය තේරුම් ගැනීමට, ඒක නිර්මාණය කර, පරීක්ෂා කර, පසුකාලීනව නිවැරදි කරන ක්රියාවලියක් පෙන්වීමයි. Python 3.9+ සහ Flask, Requests, pytest යන තුනේ පෑකේජ් භාවිතයෙන්, ඔබේ පරිගණකයේම කුඩා, ඉතා සරල REST API එකක් සකස් කර ගනිමු. එහිදී හතරක් වැනි වැරදි (BOLA, Token නොඅවශ්ය ඉල්ලීම්, Mass Assignment) පෙන්වා, ඒවාට එරෙහිව unit test මගින් regression test සකස් කරයි.
ඉදිරියට, ඔබට app.py නමින් ගොනුවක් සකසා, Flask සේවාදායකය ධාවනය කළ හැක. ලොග්‑ඉන් අවස්ථාවේ token එක ලබා ගත් පසු, /api/users/<id> වැනි endpoint එකට අනිසි user_id එකක් යොදා, වෙනත් පරිශීලකගේ තොරතුරු ලබා ගත හැකිය. එමෙන්ම, token අවශ්ය නොවන /api/users/<id>/orders endpoint එක, සහ request body එක සෘජුවම object එකට merge කරන PATCH endpoint එකද දුර්වලතා ලෙස දැක්වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයින්, ස්ථානීය startups, සහ IT සමාගම් බොහොමයක් API‑වලට බොහෝ විටම ප්රමුඛතාව නොදෙයි. BOLA වැනි දෝෂයක් ඇති වීමෙන්, පාරිභෝගික ගුප්ත තොරතුරු, SSN, credit card විස්තර වැනි වැදගත් දත්ත ලීක් විය හැක. එය නීතිමය දඬුවම්, පාරිභෝගික විශ්වාස අහිමි වීම, සහ ව්යාපාරික පිරිවැය වැඩි වීමක් ලෙස පෙනේ.
මෙම ලිපියෙන් ලබා දෙන පියවරයන්, සිසුන්ට API ආරක්ෂා කිරීමේ මූලික පරීක්ෂණ කුසලතා ඉගෙන ගැනීමට, සංවර්ධකයින්ට CI/CD පයිප්ලයින් තුළ pytest භාවිතයෙන් ස්වයංක්රිය regression test එකක් එක් කිරීමට, සහ ව්යාපාරිකයින්ට ආරක්ෂක පරීක්ෂණය අභ්යන්තරයෙන්ම කර ගැනීමට උපකාරී වේ. එමඟින්, ලංකාවේ තාක්ෂණික පදනම ශක්තිමත් කර, ගෝලීය cyber‑security ප්රතිපත්ති සමඟ සමාන කිරීමේ ඉඩ සැලසේ.
අවසන් වශයෙන්, ඔබේ API එකේ authorization logic එක නිවැරදිව ක්රියාත්මක කර, token‑based authentication, object‑level checks, සහ mass‑assignment protection යොදා ගැනීම, BOLA වැනි දෝෂයන් අඩු කර, ඔබේ පද්ධතියේ විශ්වාසය වැඩි කරයි. අදම මෙම කුඩා උදාහරණය පරීක්ෂා කර, ඔබේ ව්යාපාරයට ආරක්ෂාවක් ගොඩනඟන්න.