// docs / baas security / auth0 hardening
បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Auth0៖ 22 ធាតុ
Auth0 គឺជាវេទិកា identity-as-a-service ជាមួយផ្ទៃធំ — application, API (resource server), tenant, action, rule (ចាស់), connection និង grant។ ការកំណត់រចនាសម្ព័ន្ធខុសណាមួយក្នុងចំណោមពួកវាគឺជា auth bypass។ បញ្ជីត្រួតពិនិត្យនេះគឺជាការត្រួតពិនិត្យ 22 ធាតុនៅទូទាំង application, allowlist callback / logout, token និងការបង្វិល refresh, action ផ្ទាល់ខ្លួន, RBAC, ការរកឃើញភាពមិនធម្មតា និងការតាមដានបន្ត។ ធាតុនីមួយៗអាចផ្ទៀងផ្ទាត់បាននៅក្នុង Auth0 Dashboard ក្នុងរយៈពេលក្រោម 10 នាទី។
សម្រាប់បញ្ជីត្រួតពិនិត្យស្មើគ្នាលើ Clerk, សូមមើល បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Clerk។ សម្រាប់ផ្ទៃខាងក្រោយអំពីហេតុអ្វីការកំណត់រចនាសម្ព័ន្ធខុសនៃ identity-layer គឺជាចំណុចខ្វាក់ឧបករណ៍ AI, សូមមើល ហេតុអ្វីឧបករណ៍សរសេរកូដ AI ទុកគម្លាតសុវត្ថិភាព។
ប្រភេទកម្មវិធី និងប្រភេទ grant
ប្រភេទកម្មវិធី និងប្រភេទ grant ដែលបើកគឺជាការកំណត់ដែលមានផលប៉ះពាល់ខ្ពស់បំផុតនៅក្នុង Auth0។ ការទទួលបានពួកវាខុសបើកថ្នាក់នៃការវាយប្រហារដែលគ្មានកូដ frontend ណាមួយនឹងបិទឡើយ។
- ប្រើ Application Type = Single Page Application សម្រាប់កម្មវិធី browser-only និង Regular Web Application សម្រាប់កម្មវិធី server-rendered។ ប្រភេទខុសអនុញ្ញាតប្រភេទ grant ខុស — ឧទាហរណ៍ Regular Web App ជាមួយ SPA grant បើក Implicit flow ដែលគ្មាន PKCE ដែលលេចធ្លាយ token តាមរយៈ URL fragment។
- បិទប្រភេទ Implicit grant លើ application នីមួយៗ។ Dashboard → Application → Advanced Settings → Grant Types → ដោះធីក Implicit។ Implicit flow ត្រឡប់ token នៅក្នុង URL fragment, កន្លែងដែលពួកវាត្រូវបាន log នៅក្នុងប្រវត្តិ browser និង analytics។ ប្រើ Authorization Code with PKCE ជំនួស។
- បិទ Password grant លុះត្រាតែអ្នកមានតម្រូវការដែលបានកត់ត្រា។ Resource Owner Password Credentials (ROPC) grant តម្រូវឱ្យអ្នកគ្រប់គ្រង password អ្នកប្រើដោយខ្លួនឯង — បំបាត់ភាគច្រើននៃអ្វីដែលអ្នកទិញ Auth0។ បិទវាលុះត្រាតែបញ្ចូលប្រព័ន្ធចាស់។
- បើក Authorization Code with PKCE លើ client សាធារណៈនីមួយៗ។ Dashboard → Advanced Settings → OAuth → JsonWebToken Signature Algorithm = RS256, OIDC Conformant = បើក។ PKCE ត្រូវការសម្រាប់កម្មវិធី mobile និង SPA ដើម្បីការពារការស្ទាក់ចាប់កូដ។
Allowlist callback និង logout URL
Open redirect នៅលើផ្លូវ callback OAuth គឺជា primitive លួច token។ Allowlist របស់ Auth0 គឺជាការការពារតែមួយរបស់អ្នក។
- កំណត់ Allowed Callback URLs ទៅផ្លូវ callback ផលិតកម្មច្បាស់របស់អ្នក — គ្មាន wildcard។
https://yourapp.com/callback, មិនមែនhttps://yourapp.com/*ឡើយ។ Wildcard callback អនុញ្ញាតឱ្យអ្នកវាយប្រហារ redirect token ទៅ subpath ដែលបង្កើតបាននៅលើ domain របស់អ្នក។ - កំណត់ Allowed Logout URLs ទៅបញ្ជីដែលមានកំណត់។ ច្បាប់ដូចគ្នា៖ URL ច្បាស់តែប៉ុណ្ណោះ។ Open logout redirect អនុញ្ញាតឱ្យអ្នកវាយប្រហារបង្កើតទំព័រ phishing ដែលមើលទៅដូចស្ថានភាព post-logout របស់អ្នក។
- កំណត់ Allowed Web Origins ទៅ origin ផលិតកម្មរបស់អ្នកតែប៉ុណ្ណោះ។ ប្រើសម្រាប់ authentication ស្ងាត់ (ការ renewal token តាមរយៈ iframe លាក់)។ Origin wildcard អនុញ្ញាតឱ្យទំព័រអ្នកវាយប្រហារធ្វើ auth ស្ងាត់ប្រឆាំងនឹង tenant របស់អ្នក។
- កំណត់ Allowed CORS origin សម្រាប់ endpoint API, មិនមែន application។ Tenant Settings → Advanced → Allowed CORS origins។ លំនាំដើមគឺទទេ (រឹតបន្តឹង); បន្ថែម origin ច្បាស់ដែលអ្នកគ្រប់គ្រងតែប៉ុណ្ណោះ។
Token និងការបង្វិល refresh
អាយុ token, ការបង្វិល refresh និង algorithm signing សម្រេចរ៉ាដ្យូស្ផុះនៃការលេចធ្លាយ token ណាមួយ។
- បើក Refresh Token Rotation។ Application → Refresh Token Settings → Rotation។ ការ refresh នីមួយៗចេញ refresh token ថ្មី និងបដិសេធចាស់។ រួមជាមួយការផុតកំណត់ absolute, នេះកំណត់ការលួច token។
- កំណត់ Refresh Token Reuse Interval ទៅ 0 (ឬទាបបំផុតដែលការអត់ឱន replay របស់អ្នកអនុញ្ញាត)។ Reuse interval អនុញ្ញាតឱ្យ token ត្រូវបានប្រើពីរដងក្នុង window ដូចគ្នា — បិទវាលុះត្រាតែអ្នកមានហេតុផលជាក់លាក់ដើម្បីរក្សាវា។
- កំណត់ Absolute Refresh Token Expiry ទៅ 14-30 ថ្ងៃ មិនមែនជាដឹងមិនដឹង។ Application → Refresh Token Expiration → Absolute Expiration។ Auth0 លំនាំដើមទៅ Inactivity-only, ដែលមានន័យថា session ស្ងាត់អាចបន្តរយៈពេលរាប់ឆ្នាំ។
- កំណត់ JWT Signature Algorithm ទៅ RS256។ Application → Advanced → OAuth → JsonWebToken Signature Algorithm។ RS256 ប្រើ signing asymmetric ដូច្នេះ client មិនអាចក្លែងបន្លំ token។ មិនដែលប្រើ HS256 សម្រាប់កម្មវិធីដែលប្រឈមមុខ client ឡើយ។
- ផ្ទៀងផ្ទាត់ claim
audនិងissលើ JWT នីមួយៗដែល API របស់អ្នកទទួល។ ប្រើ SDK Auth0 ផ្លូវការនៅខាង server — វាផ្ទៀងផ្ទាត់ទាំងនេះដោយស្វ័យប្រវត្តិ។ JWT parsing ដែលធ្វើដោយដៃជារឿយៗរំលងការផ្ទៀងផ្ទាត់ audience ដែលជា auth bypass។
Action និងកូដផ្ទាល់ខ្លួន
Auth0 Action (និង Rule ចាស់) ដំណើរការ server-side ក្នុងពេលចូល និងព្រឹត្តិការណ៍វដ្ដជីវិតផ្សេងទៀត។ ពួកវាមានការចូលប្រើ context request ទាំងមូល។ កូដមិនមានសុវត្ថិភាពនៅទីនេះគឺជាភាពងាយរងគ្រោះទូទាំង tenant។
- មិនត្រូវ log
event.userឬevent.transactionជា object ទាំងមូលឡើយ។ ទាំងនេះមានអាស័យដ្ឋានអ៊ីមែល, អាស័យដ្ឋាន IP និង PII ផ្សេងទៀត។ ប្រើ logging កម្រិត field តែប៉ុណ្ណោះ និង log តែអ្វីដែលអ្នកត្រូវការ។ - ប្រើ secrets store សម្រាប់ API key ឬ URL webhook ណាមួយ។ Actions → Edit → Secrets។ មិនដែល inline API key ជា string literal នៅក្នុងកូដ action ឡើយ — កូដនេះអាចមើលឃើញចំពោះនរណាមួយដែលមានការចូលប្រើ Action editor លើ tenant។
- ផ្ទៀងផ្ទាត់ input មុនពេលរក្សាពួកវាជា user_metadata ឬ app_metadata។ Action self-service ដែលសរសេរ
event.body.nameទៅuser.user_metadata.display_nameគឺជាវ៉ិចទ័រ stored-XSS បើ frontend របស់អ្នក render field នោះដោយគ្មាន escaping។
RBAC និង resource server
បើអ្នកប្រើ Auth0 RBAC, ការ mapping role-to-permission គឺជា authorization layer របស់អ្នក។ ទទួលបានវាខុស ហើយអ្នកប្រើ authenticated ណាមួយអាចចូល endpoint admin។
- កំណត់ Resource Server (API) ច្បាស់នៅក្នុង Auth0 Dashboard, មិនមែននៅពេលដំណើរការ។ API នីមួយៗមាន identifier (
audience), scope និងការកំណត់ signing។ ដោយគ្មាន API ដែលបានចុះឈ្មោះ, token ទាំងអស់ត្រូវបានចេញសម្រាប់ "Auth0 Management API" ដែលបង្កប់ — audience ខុស។ - កំណត់រចនាសម្ព័ន្ធ Permission ក្នុង API នីមួយៗ និងតម្រូវឱ្យពួកវាក្នុងកូដរបស់អ្នកជាមួយ claim
scope។ មិនត្រូវត្រួតពិនិត្យសមាជិកភាព role ក្នុងតក្កកម្មវិធីរបស់អ្នក; ត្រួតពិនិត្យ scope ក្នុង access token។ Scope គឺជាយន្តការ authorization ដើមកំណើតរបស់ OAuth។ - សាកល្បងថាអ្នកប្រើ authenticated ដោយគ្មាន role / scope ដែលត្រូវការមិនអាចចូល endpoint មានសិទ្ធិឡើយ។ ចូលជាអ្នកប្រើធម្មតា, ព្យាយាមហៅ
POST /api/admin/users/delete។ Response ត្រូវជា403។
ការរកឃើញភាពមិនធម្មតា និង log tenant
Auth0 បញ្ចេញព្រឹត្តិការណ៍សញ្ញាខ្ពស់។ កំណត់ពួកវាដើម្បីដាស់តឿនក្រុមរបស់អ្នក មិនមែនគ្រាន់តែអង្គុយក្នុង log buffer។
- បើក Attack Protection៖ Bot Detection, Brute Force, Suspicious IP Throttling។ Dashboard → Security → Attack Protection។ មួយៗបិទតាមលំនាំដើមនៅកម្រិតឥតគិតថ្លៃ; បើកពួកវាទាំងអស់សម្រាប់ផលិតកម្ម។
- ផ្ទេរ log tenant ទៅ SIEM ឬ log កម្មវិធីរបស់អ្នក។ Dashboard → Monitoring → Streams។ Auth0 រក្សា log 30 ថ្ងៃលើ plan ភាគច្រើន; ការរក្សារយៈពេលវែងតម្រូវឱ្យមាន stream ចូលក្នុងប្រព័ន្ធផ្ទាល់របស់អ្នក។
- ដាស់តឿនលើ spike
fcoa(បរាជ័យ cross-origin auth) និងfp(បរាជ័យចូល)។ ការផ្ទុះនៃទាំងនេះក្នុង window ខ្លីគឺ credential stuffing។ បញ្ជូនទៅឆានែល on-call របស់អ្នក។
ជំហានបន្ទាប់
ដំណើរការ FixVibe scan ប្រឆាំងនឹង URL ផលិតកម្មរបស់អ្នក — ការត្រួតពិនិត្យ baas.clerk-auth0 សម្គាល់ Auth0 client secret ដែល bundled ក្នុង JavaScript និងថ្នាក់ការបង្ហាញ identity-provider ផ្សេងទៀត។ សម្រាប់ស្មើគ្នាលើ Clerk, សូមមើល បញ្ជីត្រួតពិនិត្យសុវត្ថិភាព Clerk។ សម្រាប់ទិដ្ឋភាពទូទៅនៅទូទាំង BaaS provider, សូមអាន BaaS misconfiguration scanner។
