ජො4 (jo4) ව්යාපෘතියේ සති අන්තයක් පුරා ආරක්ෂා පරීක්ෂණයක් කළාම, අපේක්ෂා කළ තරමට වඩා වැඩි ගැටළු හතුරු හතරක් හමුවුණා. එම ගැටළු අතරින් දෙක, X‑Frame‑Options හි අනිසි සැකසුම සහ පරිශීලක ඉල්ලීම් වලින් Stack Trace ලික් කිරීම, ඉතා වැදගත් පණිවිඩ දෙයි.
ගැටළුව 1 – X‑Frame‑Options නිසා සියලු Embeds අක්රිය වීම
Spring Security මූලිකව X-Frame-Options: DENY යන header එක සියලු පිළිතුරු වලට එක් කරයි. එම නිසා, ජො4 හි සපයන public stats widget එකන් iframe තුළ ඇතුළත් කරගැනීමට උත්සාහ කරන වෙබ් අඩවි, බ්රවුසරයෙන් තහනම් කර ඇත. පරිශීලකයන්ට widget එකක් පෙනෙන්නේ නැතිව, කේතය සාර්ථකව ක්රියාත්මක වුවත් header එක ඒක අඩාල කරයි.
මෙම ගැටළුව සම්පූර්ණයෙන් header එක අක්රිය කිරීමෙන් විසඳීමට උත්සාහ කළාම, click‑jacking ආකාරයේ තර්ජන වලට මුහුණපාන්නට ඉඩ ලැබේ. නිවැරදි විසඳුම වන්නේ, Spring Security හි blanket header එක අක්රිය කර, controller මට්ටමේදී අවශ්ය embed සඳහාම X-Frame-Options: ALLOWALL යන header එක සැකසීමයි. මෙසේ කරන්නේ SecurityConfig තුළ .frameOptions(f -> f.disable()) යන කොඩ් එක එක්ක, පසුව EmbedController හි entity එකේ enablePublicStats ගුණය පරීක්ෂා කර header එක තීරණය කිරීම.
ගැටළුව 2 – Type Binding හරහා Stack Trace ලික් වීම
embed widget එකට days නම් query parameter එක int වශයෙන් ලබාදීමට සැලසුම් කර තිබුණා. පරිශීලකයා /embed/stats/abc123?days=foo වැනි අස්ථානගත අගයක් ඇතුළත් කළහොත්, Spring හි type conversion අසමත් වීමෙන් TypeMismatchException එක throw කරයි. ඊට පසු 400 Bad Request පිළිතුරේ සමඟ exception පණිවිඩය, class නාම, method signature, සහ සමහර වෙලාවේ stack trace පවා පෙන්වයි. මෙය ආරක්ෂක තොරතුරු රහස් ලික් කිරීමක් වන අතර, අපරාධකරුට ඔබේ පද්ධතියේ තාක්ෂණික විස්තර දැනගැනීමට අවස්ථාව සලසයි.
ඉතා සරල විසඳුම, parameter එක String ලෙස ග්රහණය කර, Integer.parseInt භාවිතයෙන් ආරක්ෂිතව පරිවර්තනය කිරීමයි. ගණන අසත්ය නම්, පෙරනිමි 30 දිනක් භාවිතා කර, exception එකක් නොදැක්වීමෙන් පරිශීලකයාට සුහද පණිවිඩයක් ලබා දිය හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
- ඉගෙනුම් අවස්ථා: ශ්රී ලංකාවේ විශ්වවිද්යාල සහ coding bootcamps වලට Spring Security නවතම best practice ගැන්වීමේ උදාහරණයක්.
- ඩිවෙලොපර් සමාජය: X‑Frame‑Options හා exception handling සම්බන්ධයෙන් නිවැරදි සැකසුමක් ගෙන, දේශීය ව්යාපෘති වල click‑jacking සහ තොරතුරු රහස් ගැටළු අවම කරගත හැක.
- ව්යාපාරික පරිසරය: ආරක්ෂිත API සහ widget embed කිරීමේදී පාරිභෝගිකයින්ගේ විශ්වාසය වැඩි කර, සේවා නාමාවලියක් තවත් සුරක්ෂිතව පවත්වා ගත හැක.
අවසානයේ, Spring Security හි default header සැකසුම් හොඳ නමුත්, ඒවා ඔබේ යෙදුමේ විශේෂ අවශ්යතා සමඟ ගැලපෙන්නේ නැති විට, නිවැරදි “surgical” පරිසරයක් ගොඩනැගීමට අවශ්ය වේ. ඔබේ වෙබ් යෙදුමට මේ ආකාරයේ auditing එකක් කරලා, ආරක්ෂාව අඩු නොකර, පරිශීලක අත්දැකීම පවත්වා ගැනීමේ හැකියාව දැක ගන්න.