පරිපාලන උප වසම CSRF නවත්වන්නේ නැත: දියත් කිරීමට පෙර පරීක්ෂා හතරක්
නව සත්කාරක නාමය නව මූලාරම්භයකි, බොහෝ විට එකම අඩවිය, එබැවින් same-site කුකී සහ සරල පෝරම එය හරහා යයි. ටෝකන, ද්වාරය සහ අවසරය පරීක්ෂා කරන්න.
පරිපාලන අතුරුමුහුණත admin.example.com වෙත ගෙන යාම සැබෑ වැඩිදියුණුවකි: එය පරිපාලන කුකී සාමාන්ය පිටුවලින් ඈත් කර තබයි, යෙදුම් දෙකට වෙන් වෙන් කෑෂ් ලබා දෙයි සහ වඩා දැඩි ජාල ප්රතිපත්තියක් එක් සත්කාරක නාමයකට යොමු කිරීමට ඉඩ දෙයි. නමුත් එය CSRF පාලනයක් නොවේ, පිවිසුණු පරිපාලකයෙකු ඉදිරියේ පොදු අඩවියේ කේතය විවෘතව තැබීම ආරක්ෂිත කරන්නේ ද නැත. වෙන් කිරීම බ්රවුසරය මායිමක් ලෙස සලකන දේ වෙනස් කරයි, සේවාදායකය පරීක්ෂා කරන දේ නොවේ, එබැවින් කාර්යය අවසන් යැයි පැවසීමට පෙර මෙම පරීක්ෂා හතර සිදු කරන්න.
මූලාරම්භය සහ අඩවිය වෙනස් වචන දෙකක් ලෙස කියවන්න
මූලාරම්භය යනු ක්රමය, සත්කාරකය සහ තොටුපොළයි, එබැවින් https://www.example.com සහ https://admin.example.com වෙනස් මූලාරම්භ වේ. SameSite අර්ථයෙන් අඩවිය යනු ක්රමය සහ ලියාපදිංචි කළ හැකි වසමයි, එබැවින් එම සත්කාරක නාම දෙක සාමාන්යයෙන් එකම අඩවියකි. එම වෙනස මුළු උගුලයි: SameSite ගුණාංගය සොහොයුරු උප වසම් අතර උදව් නොකරයි, මන්ද බ්රවුසරය එම ඉල්ලීම කිසිසේත් අඩවි-හරණයක් ලෙස නොසලකයි. පරිපාලන අතුරුමුහුණත සැබවින්ම වෙනස් ලියාපදිංචි කළ හැකි වසමකට, උදාහරණයක් ලෙස admin-example.net වෙත හරවන්න, එවිට ඉල්ලීම සැබවින්ම අඩවි-හරණයක් වේ, සහ එහිදී SameSite=Lax හෝ Strict විශ්වාස කළ හැකි කාර්යයක් ආරම්භ කරයි.
ඒ ගැන තර්ක කිරීම වෙනුවට බ්රවුසරයේ පරීක්ෂා කරන්න.
පොදු අඩවිය පූරණය කරන්න, සංවර්ධක මෙවලම් විවෘත කරන්න, පරිපාලන සත්කාරකය වෙත යන ඉල්ලීමට බ්රවුසරය අමුණන කුකී මොනවාදැයි බලන්න. කුකීට Domain ගුණාංගයක් නොමැති නම් එය සත්කාරකයට පමණක් වන අතර තම නමේම රැඳේ; Domain=example.com තිබේ නම් එය සෑම සොහොයුරියක වෙතම යයි, නව උප වසම එම කුකී සඳහා ඔබට කිසිවක් ලබා දුන්නේ නැත.
ප්රතිචාරය කියවීම ඉල්ලීම යැවීමෙන් වෙන් කරන්න
එකම මූලාරම්භ ප්රතිපත්තිය මූලාරම්භ අතර ප්රතිචාර කියවීම සීමා කරයි. එය ඉල්ලීමක් යැවීම නවත්වන්නේ නැත, බ්රවුසරයට දැනටමත් ඇති සත්යාපන දත්ත පෝරමයක් රැගෙන යාමද වළක්වන්නේ නැත. පෝරම අන්තර්ගත වර්ගයක් හෝ සාමාන්ය GET සහිත සරල ඉල්ලීමක් පෙර පරීක්ෂාවකින් තොරව ලැබේ; පසුව CORS අඳින ස්ක්රිප්ටයට ප්රතිචාරය කියවිය හැකිද යන්න තීරණය කරයි. CSRF සම්පූර්ණයෙන්ම ජීවත් වන්නේ යැවීමේ පැත්තේය.
එබැවින් තත්ත්වය වෙනස් කරන ක්රියා සඳහා සේවාදායකයට පැහැදිලි පරීක්ෂාවක් අවශ්යයි. සැසියට බැඳුණු සමමුහුර්තකරණ ටෝකනයක්, හෝ සේවාදායකයේ සංසන්දනය කරන ද්විත්ව යැවීමේ කුකියක් එම අවස්ථාව ආවරණය කරයි; Origin හෝ Referer සංසන්දනය දෙවන ද්වාරයක් ලෙස එකතු කිරීම වටී, නමුත් එකම එක ලෙස නොවේ, මන්ද සෑම ඉල්ලීමක්ම එම ශීර්ෂකය රැගෙන නොයන අතර සෑම ප්රොක්සියක්ම එය රැක නොගනී. CSRF වැළැක්වීම සඳහා OWASP මාර්ගෝපදේශය SameSite බහු ස්තර අතර එක් ස්තරයක් ලෙස සලකන්නේ මෙම හේතුව නිසාමය.
ජාල ද්වාරය සැබවින්ම ඔප්පු කරන්නේ කුමක්දැයි තීරණය කරන්න
පරිපාලන සත්කාරකය ඉදිරියේ VPN පිටවීම්වල අවසර ලැයිස්තුවක් හොඳ පාලනයක් සහ දුර්වල අනන්යතා ප්රකාශයකි. ඉල්ලීම VPN ලබා දෙන ලිපිනයකින් පැමිණි බව එය ඔප්පු කරයි, එම පිටවීමේ සිටින සැමට එය බෙදා ගත හැකිය, එය පිටුපස සිටින පුද්ගලයා හෝ උපාංගය කුමක්ද යන්න කිසිවක් නොකියයි. එය පිවිසුම් පෙරහනක් ලෙස සලකන්න, සත්යාපනයක් ලෙස නොවේ.
එය ඉල්ලීම් මට්ටමේ පරීක්ෂාවලින් ස්වාධීනව තබන්න. ලැයිස්තුව ප්රහාරකයා සහ තත්ත්වය වෙනස් කරන අවසන් ලක්ෂ්යය අතර ඇති එකම දෙය නම්, වැරදි ලෙස වින්යාස කළ මාර්ගයක්, split-tunnel සේවාලාභියෙකු හෝ ණයට ගත් ලැප්ටොප් පරිගණකයක් පාලනය සම්පූර්ණයෙන්ම ඉවත් කරයි.
අපේක්ෂිත පරාසවලින් පිටත ප්රතික්ෂේප ද ලොග් කරන්න. ඒවායේ උද්ධෘතය ඔබ දැන් ගොඩනගා ඇති මායිම යමෙකු පරීක්ෂා කරමින් සිටින බවට වඩාත් ප්රයෝජනවත් සංඥාවයි, නිහඬතාවය පෙරහන කිසිසේත් ළඟා නොවන බවට සංඥාවයි.
කුකී, පිවිසුම සහ අවසරය පැහැදිලිව තබන්න
කුකී විෂය පථය බොහෝ ප්රතිඵල තීරණය කරයි. මව් වසමේ කුකිය පරිපාලන සත්කාරකයට යවනු ලැබේ, එබැවින් පොදු අඩවියේ ස්ක්රිප්ට් එන්නත් කිරීමකට පරිපාලකයෙකුගේ සැසිය සමඟ ක්රියා කළ හැකිය; සත්කාරකයට පමණක් වන කුකියට එය නොහැකිය. සත්කාරකයට පමණක් වන ස්වරූපය තෝරන්න, Secure ගුණාංගය එකතු කරන්න, වේදිකාව සහාය දෙන තැන __Host- උපසර්ගය භාවිත කරන්න, මන්ද එම උපසර්ගයට Secure, Path=/ සහ Domain ගුණාංගයක් නොමැති වීම අවශ්ය වේ. කුකී භාජනය නොව ප්රතිචාර ශීර්ෂකය කියවන්න: Set-Cookie: __Host-admin_session=...; Secure; Path=/; HttpOnly; SameSite=Lax, Domain ගුණාංගයකින් තොරව. බ්රවුසරය Domain සහිත __Host- කුකියක් ඉවත දමයි, එබැවින් සොහොයුරු සත්කාරකවල තවමත් පෙනෙන කුකිය උපසර්ගය කිසිදා යොදා නොගත් බවට සාක්ෂියකි.
පසුව අවසරය සේවාදායකයේ, සෑම ඉල්ලීමකටම, සෑම පරිපාලන අවසන් ලක්ෂ්යයකම තබන්න, පිවිසීමේදී පමණක් නොවේ. අවසර ලත් ජාලයකින් එන ඉල්ලීමක් තවමත් සත්යාපනය වී එය ඉල්ලන ක්රියාවට අවසර ලබා ගත යුතුය; සත්කාරක නාමය ක්රියාකරුවෙකු නොවේ. පොදු සහ පරිපාලන යෙදුම් පිවිසුම් ප්රවාහයක් හෝ සැසි ගබඩාවක් බෙදා ගන්නේ නම් එම සම්බන්ධය ලියා තබන්න, මන්ද එය පොදු අඩවියේ දෝෂයක සිට පරිපාලන ක්රියාවක් දක්වා කෙටිම මාර්ගයයි.
වෙන් කිරීමෙන් පසු මායිම නැවත පරීක්ෂා කරන්න
සුබ මාර්ගය පමණක් නොව සෘණාත්මක පරීක්ෂණ ධාවනය කරන්න: ටෝකනයක් නොමැති අඩවි-හරණ පෝරමයක් ප්රතික්ෂේප විය යුතුය, වෙනත් සැසියක ටෝකනයක් ද ප්රතික්ෂේප විය යුතුය, කිසිදු GET එකක් තත්ත්වය වෙනස් නොකළ යුතුය. සංවර්ධක මෙවලම්වල කුකී ගුණාංග පරීක්ෂා කරන්න, නොගැළපෙන ඉල්ලීමකදී Origin පරීක්ෂාව සක්රීය වන බව තහවුරු කරන්න, පෙරහන ක්රියා කරන ආකාරය බැලීමට VPN පරාසයෙන් පිටත සිට පරිපාලන සත්කාරකය උත්සාහ කරන්න.
මේ කිසිවක් පරිපාලන යෙදුම තුළම ඇති XSS දෝෂයක් ඉවත් නොකරයි. වෙන් වූ සත්කාරක නාමයක් සැබෑ වටිනාකමක් ඇති බ්රවුසර්-පැත්තේ හුදකලා මායිමක් වන අතර, එය අනාරක්ෂිත කේත ක්රියාත්මක කිරීම වැළැක්වීමට හෝ සේවාදායක-පැත්තේ ඉල්ලීම් ආරක්ෂාවට ආදේශකයක් නොවේ. වෙන් කිරීමෙන් පසු ලැයිස්තුව පෙනෙන ප්රමාණයට වඩා කෙටිය: වෙනස් මූලාරම්භය, සත්කාරකයට පමණක් කුකී, සෑම වෙනසකටම ටෝකනය, අනන්යතාවයක් ලෙස විශ්වාස නොකරන පිවිසුම් පෙරහන සහ සෑම ඉල්ලීමකටම තීරණය වන අවසරය.