چکلیست کامل امنیت صرافی ارز دیجیتال قبل از راهاندازی
یک صرافی ارز دیجیتال قبل از اینکه با اولین کاربر، اولین سفارش و اولین برداشت واقعی روبهرو شود، باید از چندین زاویه امنیتی بررسی شده باشد. مشکل اینجاست که «امن بودن سایت» با «آماده بودن یک صرافی برای Launch» یکسان نیست.
در یک پلتفرم معاملاتی، امنیت فقط به HTTPS، فایروال یا فعالکردن ورود دومرحلهای محدود نمیشود. API، کنترل دسترسی، Session، کیف پول، کلیدهای خصوصی، فرآیند برداشت، Matching Engine، پنل ادمین، زیرساخت، Secrets، لاگها، وابستگیهای نرمافزاری و حتی فرآیندهای عملیاتی کارکنان میتوانند بخشی از سطح حمله باشند.
این موضوع در اکوسیستم کریپتو اهمیت بیشتری دارد؛ گزارش TRM Labs درباره سال ۲۰۲۵ نشان میدهد حدود ۲.۸۷ میلیارد دلار در نزدیک به ۱۵۰ هک از دست رفته و بخش عمده خسارتها به سمت حمله به زیرساخت، کلیدها، کیف پولها و لایههای دسترسی رفته است.
بنابراین سؤال درست قبل از Launch این نیست که:
«آیا سایت ما تست شده است؟»
بلکه باید پرسید:
«آیا تمام مسیرهای ورود، دسترسی، معامله، نگهداری دارایی، برداشت، مدیریت و بازیابی سیستم در شرایط عادی و بحرانی آزمایش شدهاند؟»
این راهنما یک چکلیست عملی برای پاسخ به همین سؤال است.
چرا امنیت صرافی ارز دیجیتال باید قبل از راهاندازی بررسی شود؟
رفع یک آسیبپذیری قبل از ورود پول و کاربر واقعی، معمولاً بسیار کمهزینهتر از مدیریت حادثهای است که پس از Launch رخ میدهد.
بعد از راهاندازی، یک ضعف امنیتی میتواند به موارد زیر منجر شود:
- دسترسی غیرمجاز به حساب کاربران
- سرقت یا انتقال دارایی
- دستکاری سفارشها
- سوءاستفاده از API
- دسترسی به اطلاعات KYC
- افشای کلیدها یا Secrets
- دسترسی به پنل مدیریت
- ایجاد برداشتهای غیرمجاز
- دستکاری موجودی یا وضعیت تراکنش
- اختلال در Matching Engine
- توقف سرویس
- از دست رفتن داده
- آسیب اعتباری و مالی
- هزینههای incident response و recovery
- پیامدهای قراردادی یا قانونی، بسته به حوزه فعالیت و jurisdiction
NIST CSF 2.0 نیز امنیت را صرفاً مجموعهای از ابزارها نمیبیند، بلکه آن را در قالب مدیریت ریسک سازمانیافته دنبال میکند؛ این چارچوب برای سازمانها و صنایع مختلف طراحی شده و بر شناخت، مدیریت و ارتباط ریسک سایبری تمرکز دارد.
در صرافی، این نگاه اهمیت ویژهای دارد: امنیت باید بخشی از معماری و فرآیند کسبوکار باشد، نه مرحلهای که چند روز قبل از Launch به تیم فنی واگذار شود.
چکلیست امنیت صرافی ارز دیجیتال قبل از Launch
1. معماری و زیرساخت
قبل از بررسی کد، باید بدانید دقیقاً چه چیزهایی قرار است در محیط Production اجرا شوند.
چه خطری وجود دارد؟
زیرساخت اشتباه میتواند حتی یک برنامه نسبتاً امن را در معرض حمله قرار دهد. نمونهها:
- سرویسهای غیرضروری در معرض اینترنت
- دسترسی مستقیم به Database
- مدیریت ضعیف Firewall
- نبود Network Segmentation
- استفاده از حسابهای دارای دسترسی بیش از نیاز
- محیط Production مشترک با Development
- تنظیمات ناامن Cloud
- نبود کنترل مناسب روی Third-Party Services
چه چیزی باید بررسی شود؟
- Asset Inventory کامل باشد.
- تمام Serverها، Containerها، Databaseها و سرویسها شناسایی شده باشند.
- محیط Development، Staging و Production از هم جدا باشند.
- دسترسیهای شبکه حداقلی باشند.
- Management Interfaceها عمومی نباشند.
- SSH و سایر مسیرهای مدیریتی محدود شده باشند.
- IAM بر اساس Least Privilege تنظیم شده باشد.
- سیستمعامل و نرمافزارهای زیرساختی Patch باشند.
- TLS بهدرستی پیکربندی شده باشد.
- Firewall و Security Groupها بازبینی شده باشند.
- نقاط Single Point of Failure شناسایی شده باشند.
CIS Controls یک مجموعه کنترل اولویتبندیشده و عملی برای دفاع در برابر حملات رایج ارائه میکند و نسخه 8.1 آن با محیطهای Cloud و Hybrid نیز همراستا شده است.
چگونه تست کنیم؟
- Configuration Review
- Infrastructure Vulnerability Assessment
- Cloud Security Review
- Network Segmentation Test
- بررسی IAM
- بررسی External Attack Surface
نشانه آماده نبودن
اگر تیم دقیقاً نمیداند چه سرویسهایی از اینترنت قابل دسترسی هستند، Launch هنوز زود است.
اقدام اصلاحی
یک Asset Inventory و Attack Surface Inventory ایجاد کنید و تمام دسترسیها را بر اساس اصل Least Privilege بازطراحی کنید.
2. معماری نرمافزار و Backend
امنیت باید از Design شروع شود.
ریسک
گاهی آسیبپذیری نتیجه یک خط کد اشتباه نیست؛ بلکه نتیجه معماریای است که از ابتدا مرزهای اعتماد، دسترسی و مالکیت منابع را درست تعریف نکرده است.
بررسی کنید
- Serviceها مرز مشخص داشته باشند.
- عملیات حساس در Backend اعتبارسنجی شوند.
- هیچ تصمیم امنیتی صرفاً به Frontend واگذار نشود.
- Business Logic در Server enforce شود.
- وضعیت تراکنشها State Machine مشخص داشته باشد.
- عملیات مالی Idempotency مناسب داشته باشند.
- کنترل دسترسی در سطح Object و Function انجام شود.
- Error Handling اطلاعات حساس را افشا نکند.
OWASP ASVS 5.0 میتواند بهعنوان چارچوب Verification برای بررسی الزامات امنیتی برنامه مورد استفاده قرار گیرد.
3. امنیت API
در بسیاری از صرافیهای مدرن، API بخش مهمی از سطح حمله است.
OWASP API Security Top 10 2023 مواردی مانند Broken Object Level Authorization، Broken Authentication، Broken Function Level Authorization، Unrestricted Resource Consumption، SSRF، Security Misconfiguration و Improper Inventory Management را در میان ریسکهای اصلی API قرار میدهد.
چکلیست API
- ☐ تمام Endpointها Inventory شدهاند.
- ☐ APIهای قدیمی و Debug Endpointها حذف یا محدود شدهاند.
- ☐ Authentication برای تمام APIهای حساس بررسی شده است.
- ☐ Authorization در Backend enforce میشود.
- ☐ کاربر نمیتواند ID متعلق به کاربر دیگر را دستکاری کند.
- ☐ Object-level Authorization تست شده است.
- ☐ Function-level Authorization تست شده است.
- ☐ API Keyها دارای Scope هستند.
- ☐ API Keyهای بدون استفاده Revoked شدهاند.
- ☐ Secretها داخل Source Code نیستند.
- ☐ Rate Limiting فعال است.
- ☐ محدودیت مصرف منابع وجود دارد.
- ☐ Validation ورودیها انجام میشود.
- ☐ Error Responseها اطلاعات داخلی را افشا نمیکنند.
- ☐ API Versioning مشخص است.
- ☐ APIهای Third-Party نیز بررسی شدهاند.
چگونه تست کنیم؟
برای API باید علاوه بر اسکن خودکار، Manual Security Testing انجام شود؛ بهخصوص روی:
- Authorization
- Authentication
- Business Logic
- Rate Limit
- Resource Consumption
- Sensitive Data Exposure
نشانه خطرناک
اگر یک API فقط با تغییر یک شناسه بتواند داده یا عملیات متعلق به کاربر دیگر را در اختیار درخواستکننده قرار دهد، این یک Red Flag جدی است.
4. احراز هویت، 2FA/MFA و مدیریت Session
احراز هویت قوی بهتنهایی کافی نیست؛ Session بعد از Login نیز باید محافظت شود.
OWASP تأکید میکند Session ID عملاً نماینده وضعیت احراز هویت کاربر است و سرقت یا جعل آن میتواند به Session Hijacking منجر شود. همچنین برای عملیات حساس، Re-authentication میتواند یک لایه دفاعی مهم باشد.
بررسی کنید
- ☐ Password Policy مناسب است.
- ☐ Passwordها با الگوریتم مناسب و امن Hash میشوند.
- ☐ MFA برای عملیات حساس در نظر گرفته شده است.
- ☐ Session Tokenها تصادفی و غیرقابل حدس هستند.
- ☐ Session پس از تغییر سطح دسترسی مجدداً ایجاد میشود.
- ☐ Idle Timeout وجود دارد.
- ☐ Absolute Timeout تعریف شده است.
- ☐ Logout واقعاً Session را invalidate میکند.
- ☐ Sessionهای فعال قابل مشاهده و مدیریت هستند.
- ☐ Re-authentication برای عملیات حساس وجود دارد.
- ☐ Cookieها در صورت استفاده دارای Secure و HttpOnly و تنظیم مناسب SameSite هستند.
- ☐ Tokenهای حساس در URL قرار نمیگیرند.
عملیات حساس
حداقل این عملیات باید از نظر Authentication و Authorization ویژه بررسی شوند:
- تغییر Password
- تغییر Email
- تغییر شماره موبایل
- تغییر MFA
- ایجاد API Key
- تغییر تنظیمات امنیتی
- افزودن Withdrawal Address
- برداشت
- تغییر محدودیتهای مالی
5. کنترل دسترسی و RBAC
RBAC یا Role-Based Access Control باید دقیقاً مشخص کند چه کسی چه کاری میتواند انجام دهد.
در یک صرافی، «Admin» نباید الزاماً به معنای «دسترسی به همه چیز» باشد.
نقشها را تفکیک کنید
برای مثال:
- Super Admin
- Security Admin
- Finance
- Support
- Compliance
- Operations
- Developer
- Auditor
بررسی کنید
- ☐ هر Role حداقل دسترسی لازم را دارد.
- ☐ کاربران Support به اطلاعات مالی حساس دسترسی غیرضروری ندارند.
- ☐ Developerها به Production Secretها دسترسی پیشفرض ندارند.
- ☐ عملیات حساس نیازمند Approval جداگانه است.
- ☐ دسترسی کارکنان هنگام خروج فوراً لغو میشود.
- ☐ Access Review دورهای انجام میشود.
- ☐ اقدامات Privileged در Audit Log ثبت میشوند.
OWASP API Security نیز نشان میدهد که Authorization یکی از اصلیترین نقاط شکست در APIهای مدرن است؛ بنابراین RBAC نباید فقط در UI پیادهسازی شود و باید در Server enforce شود.
6. امنیت پنل مدیریت
پنل Admin یکی از جذابترین اهداف برای مهاجم است، چون compromise شدن یک حساب مدیریتی ممکن است دسترسی گستردهای ایجاد کند.
چکلیست
- ☐ Admin Panel روی مسیر و معماری امن قرار دارد.
- ☐ MFA اجباری است.
- ☐ دسترسی بر اساس Role محدود است.
- ☐ IP Restriction یا Access Control متناسب با مدل عملیاتی بررسی شده است.
- ☐ Session Timeout مناسب وجود دارد.
- ☐ اقدامات حساس نیازمند تأیید مجدد هستند.
- ☐ تغییرات مهم Audit میشوند.
- ☐ عملیات مالی حساس Dual Control یا Approval Workflow دارند.
- ☐ Adminها نمیتوانند بدون Traceability دادههای مالی را تغییر دهند.
- ☐ Debug و Test Functionها در Production غیرفعال هستند.
اصل مهم: اگر یک کارمند بتواند موجودی، مقصد برداشت و وضعیت تراکنش را بدون ثبت ردپا تغییر دهد، مشکل فقط «امنیت پنل» نیست؛ معماری کنترل مالی نیز نیاز به بازنگری دارد.
7. امنیت کیف پول و کلیدهای خصوصی
این بخش از مهمترین قسمتهای امنیت صرافی است.
گزارش TRM Labs درباره ۲۰۲۵ نشان میدهد حملات زیرساختی شامل compromise شدن Keyها، Walletها و Access Control بخش عمده خسارتهای هکی را تشکیل دادهاند.
Hot Wallet و Cold Wallet
Hot Wallet برای عملیات آنلاین و نقدینگی عملیاتی مناسب است، اما به دلیل Online بودن، سطح ریسک بیشتری دارد.
Cold Wallet سطح دسترسی آنلاین را کاهش میدهد و معمولاً برای بخش عمده ذخایر مناسبتر است، البته معماری دقیق باید بر اساس مدل کسبوکار و ریسک تعیین شود.
بررسی کنید
- ☐ Private Key در Source Code یا فایل Configuration نگهداری نمیشود.
- ☐ Secretها در Secret Management مناسب نگهداری میشوند.
- ☐ دسترسی به Key محدود و Audit میشود.
- ☐ Hot Wallet Exposure محدود شده است.
- ☐ سقف موجودی Hot Wallet مشخص است.
- ☐ فرآیند انتقال بین Hot و Cold Wallet تعریف شده است.
- ☐ برای عملیات حساس Approval وجود دارد.
- ☐ Backupهای Key با همان سطح امنیت Production نگهداری نمیشوند.
- ☐ Key Rotation و Recovery Plan تعریف شده است.
- ☐ در صورت استفاده از Multisig یا MPC، فرآیندهای آن تست شدهاند.
- ☐ سناریوی Compromise شدن یک Credential بهصورت جداگانه بررسی شده است.
OWASP در راهنمای Secrets Management نیز بر مدیریت متمرکز، کنترل دسترسی، Audit و Rotation برای Secretهایی مانند API Key، Credential و SSH Key تأکید دارد.
8. امنیت واریز و برداشت
در صرافی، Withdrawal یکی از حساسترین Business Flowها است.
نباید فرض کرد چون کاربر Password و 2FA دارد، برداشت نیز خودبهخود امن است.
بررسی کنید
- ☐ برداشت نیازمند Authentication مناسب است.
- ☐ Transaction Authorization جدا از Login بررسی شده است.
- ☐ مقصد برداشت قابل اعتبارسنجی است.
- ☐ Withdrawal Limit وجود دارد.
- ☐ Rate Limit مالی وجود دارد.
- ☐ رفتار غیرعادی برداشت Detection میشود.
- ☐ تغییر Withdrawal Address دارای کنترل امنیتی است.
- ☐ برای تغییرات حساس Re-authentication وجود دارد.
- ☐ در شرایط پرریسک Withdrawal Delay یا Review امکانپذیر است.
- ☐ Whitelist در صورت مناسب بودن مدل کسبوکار در نظر گرفته شده است.
- ☐ Approval Workflow برای مبالغ بالا وجود دارد.
- ☐ تراکنشهای حساس Audit Trail دارند.
OWASP در راهنمای Transaction Authorization توصیه میکند هر تراکنش هنگام اجرا مجدداً از نظر مجاز بودن بررسی شود، داده تراکنش در برابر تغییر محافظت شود و اعتبار Credential مربوط به Authorization محدود و حتی برای هر عملیات منحصربهفرد باشد.
9. سیستم ضدتقلب و تشخیص رفتار مشکوک
امنیت صرافی فقط جلوگیری از Exploit فنی نیست.
ممکن است حساب کاربر بدون Exploit مستقیم، از طریق Credential Theft یا Social Engineering در اختیار مهاجم قرار گرفته باشد.
Signalهای قابل بررسی
- Login از موقعیت غیرمعمول
- تغییر ناگهانی Device
- تغییر Password و سپس Withdrawal
- تغییر Email و سپس Withdrawal
- ایجاد API Key جدید
- افزایش ناگهانی حجم معاملات
- الگوی غیرعادی سفارشها
- چندین تلاش Login ناموفق
- تغییر تنظیمات امنیتی پشت سر هم
- برداشتهای غیرمعمول
- تغییر Withdrawal Address قبل از برداشت
سیستم باید بتواند این رویدادها را Correlate کند، نه اینکه هرکدام را بهصورت جداگانه ببیند.
10. Rate Limiting و DDoS Protection
Rate Limiting باید فقط برای Login نباشد.
برای مواردی مانند:
- Login
- OTP
- Password Reset
- API
- Order Creation
- Withdrawal
- Address Addition
- Sensitive Admin Actions
محدودیت مناسب تعریف کنید.
در کنار آن، برای مقابله با DDoS باید مشخص باشد:
- چه چیزی در CDN/WAF متوقف میشود؟
- چه چیزی در Application Layer کنترل میشود؟
- چگونه ترافیک غیرعادی شناسایی میشود؟
- در زمان حمله چه سرویسهایی باید حفظ شوند؟
- آیا Critical APIها در برابر Resource Exhaustion محافظت شدهاند؟
OWASP API Security Top 10 نیز Unrestricted Resource Consumption را بهعنوان یکی از ریسکهای مهم API معرفی میکند.
11. SQL Injection، XSS، CSRF و SSRF
این آسیبپذیریها قدیمی هستند، اما قدیمی بودن به معنی بیخطر بودن نیست.
SQL Injection
از Queryهای Parameterized و Prepared Statement استفاده کنید و از Concatenation مستقیم داده کاربر با Query اجتناب کنید. OWASP استفاده از Prepared Statements و Parameterized Queries را یکی از دفاعهای اصلی میداند.
XSS
ورودی کاربر باید بسته به Context بهدرستی Encode یا Sanitize شود. استفاده از Framework مدرن کمککننده است اما بهتنهایی تضمینکننده امنیت نیست.
CSRF
برای عملیات State-Changing، بهخصوص در معماریهای مبتنی بر Cookie، باید مکانیزم مناسب CSRF Protection وجود داشته باشد. OWASP استفاده از قابلیتهای داخلی Framework یا CSRF Token را در چنین سناریوهایی توصیه میکند.
SSRF
اگر Backend بتواند URL خارجی را Fetch کند، این قابلیت باید با دقت بررسی شود. SSRF میتواند Application را به سمت شبکه داخلی یا سرویسهایی هدایت کند که نباید مستقیماً در دسترس کاربر باشند.
12. امنیت WebSocket
صرافیهای معاملاتی برای قیمت لحظهای، Order Book و رویدادهای بازار ممکن است از WebSocket استفاده کنند.
بنابراین WebSocket نیز باید در Scope تست امنیتی باشد.
بررسی کنید
- Authentication
- Authorization
- Origin Validation در معماری مناسب
- Session Management
- Rate Limiting
- Message Validation
- Connection Limits
- جلوگیری از دسترسی Cross-User
- جلوگیری از افشای اطلاعات خصوصی
- قطع Session پس از Logout یا Revoke
- Logging رویدادهای امنیتی
13. امنیت Database
Database صرافی ممکن است حاوی اطلاعات بسیار حساس باشد:
- User Data
- KYC Data
- Balances
- Orders
- Transactions
- Audit Logs
- API Metadata
OWASP در Database Security بر Transport Protection، Authentication امن، Credential Management، Permissions و Hardening تأکید دارد.
چکلیست
- ☐ Database مستقیماً از اینترنت قابل دسترسی نیست.
- ☐ Credentialها در Secret Manager هستند.
- ☐ Userهای Database Least Privilege دارند.
- ☐ Encryption مناسب برای دادههای حساس بررسی شده است.
- ☐ Backup رمزنگاری شده است.
- ☐ دسترسیهای Database Log میشوند.
- ☐ Queryهای حساس قابل Audit هستند.
- ☐ Data Retention مشخص است.
- ☐ Production Data بدون کنترل وارد محیط Development نمیشود.
14. Encryption و مدیریت Secrets
Encryption باید دقیقاً مشخص کند:
چه چیزی، در چه زمانی، با چه کلیدی و در کجا رمزنگاری میشود؟
صرفاً نوشتن «اطلاعات ما رمزنگاری شدهاند» کافی نیست.
بررسی کنید:
- TLS برای ارتباطات حساس
- Encryption at Rest در صورت نیاز
- Key Management
- Secret Rotation
- Access Control
- Secret Audit
- عدم Hardcode شدن Secretها
- عدم قرارگیری Secret در Git
- عدم Log شدن Password، Token، Private Key یا API Secret
OWASP هشدار میدهد که Secretها اغلب بهصورت ناامن در Source Code، Configuration و ابزارهای مدیریت Configuration پراکنده میشوند و بر Centralized Storage، Provisioning، Auditing و Rotation تأکید دارد.
15. Logging، Monitoring و Alerting
اگر حادثهای اتفاق بیفتد، باید بتوانید پاسخ دهید:
چه کسی، چه زمانی، از کجا و چه کاری انجام داد؟
Logging فقط فعالکردن Web Server Log نیست. OWASP نیز بر اهمیت Application Security Logging و ثبت رویدادهای امنیتی در سطح Application تأکید میکند.
حداقل رویدادهای مهم
- Login موفق و ناموفق
- MFA تغییر یافته
- Password تغییر یافته
- Email تغییر یافته
- API Key ایجاد/لغو شده
- Withdrawal Address تغییر کرده
- Withdrawal ایجاد شده
- Admin Login
- تغییر Role
- تغییر Permission
- تغییرات تنظیمات مالی
- دسترسیهای Privileged
- خطاهای امنیتی
- فعالیتهای مشکوک
Monitoring باید بتواند Alert کند
مثلاً:
چندین Login ناموفق → Login موفق → تغییر MFA → ایجاد API Key → Withdrawal
این زنجیره بسیار مهمتر از هر رویداد منفرد است.
16. Backup و Disaster Recovery
Backup زمانی ارزش دارد که واقعاً قابل Restore باشد.
چکلیست:
- ☐ Backup برای دادههای حیاتی فعال است.
- ☐ Backupها در محل جداگانه نگهداری میشوند.
- ☐ Backupها Access Control دارند.
- ☐ Backup Encryption بررسی شده است.
- ☐ Restore Test انجام شده است.
- ☐ RPO مشخص است.
- ☐ RTO مشخص است.
- ☐ سناریوی Database Corruption بررسی شده است.
- ☐ سناریوی Ransomware یا Compromise زیرساخت بررسی شده است.
- ☐ مسئول Recovery مشخص است.
- ☐ Runbook بازیابی وجود دارد.
یک Backup که هیچوقت Restore Test نشده، از نظر عملی «فرضیه Backup» است، نه الزاماً یک قابلیت Recovery اثباتشده.
17. Dependency Security و Supply Chain
یک صرافی فقط به کدی که خودش نوشته وابسته نیست.
ممکن است وابسته باشد به:
- Framework
- Package
- SDK
- Docker Image
- Cloud Service
- Blockchain Node
- RPC Provider
- KYC Provider
- Email/SMS Provider
- Analytics
- Monitoring
- Payment Provider
بررسی کنید
- Dependency Inventory دارید؟
- نسخههای آسیبپذیر شناسایی میشوند؟
- Dependency Update Process دارید؟
- Packageهای بلااستفاده حذف شدهاند؟
- Source و Integrity Packageها کنترل میشود؟
- Third-Party Risk Assessment انجام شده؟
- در صورت اختلال سرویسدهنده خارجی، رفتار سیستم مشخص است؟
18. Code Review و تست امنیتی
Security Testing نباید به یک Automated Scanner محدود شود.
ترکیب مناسبتر
SAST + DAST + Dependency Scanning + Manual Review + Penetration Testing
و در صورت نیاز:
- API Testing
- Business Logic Testing
- Infrastructure Testing
- Cloud Configuration Review
- Wallet Security Review
- Access Control Review
OWASP ASVS برای تبدیل الزامات امنیتی به معیارهای قابل Verification گزینه مناسبی است.
19. تست نفوذ صرافی ارز دیجیتال
تست نفوذ یا Penetration Testing باید قبل از Launch در Scope مشخص انجام شود.
اما «تست نفوذ انجام شد» بهتنهایی معیار کافی نیست.
گزارش باید مشخص کند:
- Scope چه بوده؟
- چه Assetهایی تست شدهاند؟
- چه APIهایی بررسی شدهاند؟
- آیا Authentication تست شده؟
- آیا Authorization تست شده؟
- آیا Business Logic بررسی شده؟
- آیا Withdrawal Flow بررسی شده؟
- آیا Admin Panel بررسی شده؟
- آیا WebSocket در Scope بوده؟
- آیا Infrastructure تست شده؟
- Severity یافتهها چیست؟
- آیا یافتههای Critical و High رفع و Retest شدهاند؟
یک معیار مهم
Pentest بدون Retest برای یافتههای مهم، نشانه کافی برای Go-Live نیست.
20. امنیت Matching Engine و معاملات
Matching Engine قلب عملیاتی صرافی معاملاتی است.
باید بررسی شود:
- Order Validation
- Price/Quantity Validation
- جلوگیری از Manipulation
- Race Conditions
- Atomicity
- Idempotency
- وضعیت Order
- Cancel/Replace
- همگامسازی Balance و Order
- Consistency بین Trading Engine و Ledger
در این قسمت، امنیت و Correctness به یکدیگر نزدیک میشوند؛ چون یک نقص منطقی ممکن است مستقیماً اثر مالی داشته باشد.
21. امنیت Spot Trading
در Spot باید بهطور ویژه موارد زیر بررسی شوند:
- Order Validation
- Balance Locking
- Double Spending در سطح داخلی
- Race Conditions
- Order Cancellation
- Fee Calculation
- Precision/Decimal Handling
- Ledger Consistency
- Market Data Integrity
برای ساختار و معماری یک پلتفرم Spot، بسته به مرحله پروژه، میتوان گزینههای توسعهای مانند طراحی سایت صرافی اسپات (Spot) ارز دیجیتال را نیز جداگانه ارزیابی کرد؛ اما امنیت باید مستقل از انتخاب مسیر توسعه Verify شود.
22. امنیت صرافی Futures ارز دیجیال
Futures نسبت به Spot، منطق مالی و ریسک پیچیدهتری دارد.
مواردی مانند:
- Margin
- Leverage
- Liquidation
- Mark Price
- Funding
- Position State
- Risk Engine
- Order Matching
- Insurance Mechanism
باید در تست امنیتی و Business Logic Testing قرار بگیرند.
اگر مدل کسبوکار شما Futures است، بررسی معماری اختصاصی در طراحی سایت صرافی فیوچرز (Futures) ارز دیجیتال باید جدا از چکلیست عمومی امنیت انجام شود.
23. امنیت صرافی CEX ارز دیحجیتال
در Centralized Exchange یا CEX علاوه بر امنیت Application، یک نقطه تمرکز بزرگ وجود دارد:
سیستم مرکزی کنترل حساب، موجودی، سفارش و دارایی.
بنابراین مواردی مانند:
- Privileged Access
- Wallet Security
- Ledger Integrity
- Admin Security
- Internal Fraud
- Withdrawal Controls
- Segregation of Duties
اهمیت بیشتری پیدا میکنند.
اگر در مرحله انتخاب معماری هستید، میتوانید ساختارهای مختلف طراحی سایت صرافی متمرکز (CEX) را بررسی کنید.
برای پروژهای که استفاده از راهکار آماده را مدنظر دارد نیز، اسکریپت صرافی متمرکز (CEX) ارز دیجیتال میتواند در مرحله ارزیابی گزینههای فنی مورد بررسی قرار گیرد؛ البته وجود قابلیت امنیتی در یک محصول باید با Audit و Testing مستقل Verify شود.
24. امنیت صرافی p2p ارز دیجیتال
در P2P علاوه بر Application Security، مسئله اصلی اعتماد و کنترل فرآیند معامله است.
باید موارد زیر بررسی شوند:
- Escrow Logic
- Release Conditions
- Dispute Handling
- Identity/Account Integrity
- Fraud Detection
- Payment Verification
- Timeout Rules
- State Transition
- Admin Override
- Audit Trail
اگر مدل شما P2P است، معماری آن را میتوان در کنار کنترلهای امنیتی عمومی در طراحی و ساخت پلتفرم صرافی P2P بررسی کرد.
برای مقایسه مسیرهای توسعه نیز اسکریپت صرافی P2P ارز دیجیتال میتواند بهعنوان یکی از گزینهها ارزیابی شود.
25. امنیت صرافی OTC ارز دیجیتال
در OTC معمولاً فرآیندها با حجم بالاتر و تعاملات عملیاتی متفاوتی همراه هستند.
تمرکز امنیتی باید روی:
- Approval Workflow
- Deal Authorization
- Settlement
- Identity Verification
- Manual Operations
- Role Separation
- Auditability
- Payment/Asset Reconciliation
باشد.
اگر مدل کسبوکار شما OTC است، معماری و فرآیندها را میتوان در چارچوب ساخت پلتفرم صرافی OTC ارزیابی کرد.
26. امنیت KYC/AML از منظر فنی
KYC و AML فقط موضوع Compliance نیستند؛ دادههای KYC نیز Asset حساس هستند.
بررسی کنید:
- چه دادهای ذخیره میشود؟
- چه کسانی به آن دسترسی دارند؟
- آیا Data Minimization رعایت شده؟
- دادهها در Transit و در صورت نیاز At Rest محافظت میشوند؟
- Retention Policy چیست؟
- Export داده چگونه کنترل میشود؟
- دسترسی Support چگونه ثبت میشود؟
- Third-Party KYC Provider چه سطح دسترسی دارد؟
الزامات قانونی و نظارتی این بخش بسته به کشور، مجوز و مدل فعالیت صرافی متفاوت است؛ بنابراین چکلیست فنی نباید جایگزین بررسی حقوقی و Compliance تخصصی شود.
27. مدیریت Incident Response
هیچ معماری امنیتی را نباید با فرض «هیچوقت نفوذ نمیشویم» طراحی کرد.
سؤال درست این است:
اگر فردا یکی از Credentialهای مهم ما compromise شد، دقیقاً چه میکنیم؟
باید Runbook برای سناریوهایی مانند این داشته باشید:
- Compromise شدن Admin
- Compromise شدن API Key
- Suspicious Withdrawal
- Private Key Compromise
- Database Breach
- Cloud Account Compromise
- DDoS
- Ransomware
- Dependency Vulnerability
- Insider Threat
برای هر سناریو مشخص کنید:
- چه کسی Incident را اعلام میکند؟
- چه کسی تصمیمگیرنده است؟
- چه دسترسیهایی باید Revoke شوند؟
- چه سرویسهایی باید Isolate شوند؟
- چگونه داراییها محافظت میشوند؟
- چگونه Evidence حفظ میشود؟
- چگونه کاربران مطلع میشوند؟
- چه زمانی Recovery آغاز میشود؟
تفاوت امنیت Spot، Futures، CEX، P2P و OTC
| مدل | تمرکز امنیتی اصلی | ریسکهای شاخص |
|---|---|---|
| Spot | Order و Ledger | Race Condition، Balance Integrity، API Abuse |
| Futures | Risk/Margin Engine | Liquidation Logic، Leverage، Position Integrity |
| CEX | کنترل متمرکز | Wallet، Admin، Withdrawal، Internal Access |
| P2P | Escrow و معامله کاربر با کاربر | Fraud، Dispute، State Manipulation |
| OTC | Settlement و عملیات دستی | Privileged Access، Approval، High-value Transactions |
بنابراین نمیتوان یک چکلیست عمومی را بدون تغییر برای تمام مدلهای صرافی استفاده کرد.
اگر هنوز زیرساخت صرافی را انتخاب نکردهاید،
بررسی گزینههای مختلف برای طراحی سایت صرافی ارز دیجیتال میتواند قبل از ورود به مرحله توسعه به تصمیمگیری معماری کمک کند.
اشتباهات رایج در امنیت صرافی ارز دیجیتال قبل از راهاندازی
1. «فقط SSL داریم، پس سایت امن است»
HTTPS برای محافظت از ارتباط ضروری است، اما فقط یکی از لایههای امنیت است.
راهکار: Application، API، Infrastructure، Wallet و Business Logic را نیز تست کنید.
2. فعال کردن 2FA و پایان دادن به تست امنیت
MFA مهم است، اما اگر مهاجم بتواند Session، API Key یا Workflow برداشت را دور بزند، MFA بهتنهایی کافی نیست.
راهکار: Authentication و Transaction Authorization را جداگانه بررسی کنید.
3. تست فقط روی Frontend
مخفی کردن Button در Frontend کنترل دسترسی نیست.
راهکار: تمام Authorizationها باید در Backend enforce شوند.
4. نگهداری Secret داخل .env و Git
این روش ممکن است در توسعه رایج باشد اما برای Production بدون کنترل مناسب خطرناک است.
راهکار: Secret Management، Rotation و Access Audit داشته باشید. OWASP نیز بر همین چرخه مدیریت Secret تأکید میکند.
5. نگهداری بیش از حد دارایی در Hot Wallet
هرچه Exposure آنلاین بیشتر باشد، Impact یک compromise بالقوه نیز میتواند بیشتر شود.
راهکار: Hot Wallet Exposure، Limits و فرآیند Cold Storage را بر اساس Risk Model طراحی کنید.
6. اعتماد کامل به WAF
WAF میتواند یک لایه دفاعی باشد، اما جایگزین رفع آسیبپذیری Application نیست.
راهکار: Root Cause را در Code و Architecture برطرف کنید.
7. انجام Pentest بدون Retest
گزارش Pentest با چند Finding باز، معیار مناسبی برای Go-Live نیست.
راهکار: برای یافتههای مهم Remediation و Retest را به Definition of Done امنیتی تبدیل کنید.
8. تست نکردن سناریوی برداشت
ممکن است Login امن باشد ولی Withdrawal Flow آسیبپذیر باشد.
راهکار: کل Transaction Lifecycle را End-to-End تست کنید.
9. Backup بدون Restore Test
Backup خراب یا غیرقابلبازیابی در زمان بحران کمکی نمیکند.
راهکار: Restore Drill دورهای داشته باشید.
10. دادن دسترسی کامل به یک Admin
تمرکز بیش از حد Privilege، Impact compromise را افزایش میدهد.
راهکار: RBAC، Least Privilege، Segregation of Duties و Approval Workflow.
از کجا بفهمیم اسکریپت صرافی ارز دیجیتال برای Launch آماده است؟
«آماده Launch» بودن را باید با معیار قابل بررسی تعریف کرد.
یک صرافی زمانی به Go-Live نزدیک است که حداقل این شرایط برقرار باشند:
از نظر فنی
- Asset Inventory کامل است.
- Production Environment مشخص و Harden شده است.
- Attack Surface شناخته شده است.
- Dependencyهای بحرانی بررسی شدهاند.
- APIها تست شدهاند.
- Authentication و Authorization تست شدهاند.
- Admin Panel بررسی شده است.
- Wallet Architecture Review شده است.
- Withdrawal Flow تست شده است.
- Logging و Monitoring فعال است.
- Alerting آزمایش شده است.
از نظر امنیتی
- Vulnerability Assessment انجام شده است.
- Penetration Test انجام شده است.
- Critical و High Findings بدون Risk Acceptance معتبر باقی نماندهاند.
- Retest انجام شده است.
- Secrets مدیریتشده هستند.
- Key Management فرآیند مشخص دارد.
- MFA برای دسترسیهای حساس فعال است.
- Incident Response Plan وجود دارد.
از نظر عملیاتی
- Backup وجود دارد.
- Restore Test انجام شده است.
- RTO/RPO مشخص است.
- Runbookهای Incident وجود دارند.
- مسئول هر Incident مشخص است.
- دسترسی کارکنان Review شده است.
از نظر مالی
- Withdrawal Limits مشخص هستند.
- Approval Workflow برای عملیات حساس وجود دارد.
- Ledger و Balance Reconciliation تست شده است.
- Fraud Monitoring فعال است.
اگر تیم نتواند برای هرکدام از این موارد مدرک، تست یا شواهد قابل بررسی ارائه کند، عبارت «آماده Launch» هنوز اثبات نشده است.

مسیر پیشنهادی Security Gate قبل از Go-Live
میتوان فرآیند را در چند Gate تعریف کرد:
Gate 1 — Architecture Review
بررسی معماری، Trust Boundary، Infrastructure و Threat Model.
Gate 2 — Secure Development Review
بررسی Code، Dependencies، Authentication، Authorization و Secrets.
Gate 3 — Security Testing
Vulnerability Assessment، API Testing، DAST/SAST و Manual Testing.
Gate 4 — Penetration Testing
تست مستقل و سناریوهای Attack واقعی در محدوده مجاز.
Gate 5 — Remediation & Retest
رفع Findings و اعتبارسنجی مجدد.
Gate 6 — Operational Security
Logging، Monitoring، Alerting، Backup، Recovery و Incident Response.
Gate 7 — Go-Live Approval
ثبت Risk Acceptanceهای باقیمانده و تأیید رسمی Stakeholderهای مسئول.
این رویکرد با نگاه Risk-Based در NIST CSF 2.0 همراستا است؛ NIST این چارچوب را برای کمک به سازمانها در درک، ارزیابی و مدیریت ریسک سایبری ارائه کرده است.
اگر هنوز زیرساخت صرافی را انتخاب نکردهاید،
بررسی گزینههای مختلف برای طراحی سایت صرافی ارز دیجیتال میتواند قبل از ورود به مرحله توسعه به تصمیمگیری معماری کمک کند.
11. چکلیست نهایی قابل استفاده قبل از Launch
زیرساخت
- ☐ Asset Inventory کامل شده است.
- ☐ Production از Development جداست.
- ☐ Network Segmentation بررسی شده است.
- ☐ Firewall/Security Groupها Review شدهاند.
- ☐ Management Access محدود شده است.
- ☐ Patch Management انجام شده است.
- ☐ Cloud Configuration بررسی شده است.
Application
- ☐ Code Review امنیتی انجام شده است.
- ☐ SAST انجام شده است.
- ☐ DAST انجام شده است.
- ☐ Dependency Scan انجام شده است.
- ☐ Input Validation بررسی شده است.
- ☐ SQL Injection تست شده است.
- ☐ XSS تست شده است.
- ☐ CSRF بررسی شده است.
- ☐ SSRF بررسی شده است.
API
- ☐ API Inventory کامل است.
- ☐ APIهای قدیمی حذف یا محدود شدهاند.
- ☐ Authentication تست شده است.
- ☐ Authorization تست شده است.
- ☐ Object-level Authorization تست شده است.
- ☐ Function-level Authorization تست شده است.
- ☐ Rate Limiting فعال است.
- ☐ API Key Management امن است.
- ☐ API Secretها خارج از Source Code هستند.
Authentication
- ☐ Password Policy مناسب است.
- ☐ MFA برای دسترسیهای حساس فعال است.
- ☐ Session Management تست شده است.
- ☐ Session Timeout وجود دارد.
- ☐ Re-authentication برای عملیات حساس وجود دارد.
- ☐ Logout Session را invalidate میکند.
Admin
- ☐ RBAC پیادهسازی شده است.
- ☐ Least Privilege رعایت شده است.
- ☐ Admin MFA فعال است.
- ☐ Privileged Actions Log میشوند.
- ☐ دسترسی کارکنان Review شده است.
- ☐ دسترسی افراد خارجشده Revoked شده است.
Wallet
- ☐ Private Key در Source Code نیست.
- ☐ Secret Management وجود دارد.
- ☐ Hot Wallet Limit تعریف شده است.
- ☐ Cold Storage Strategy مشخص است.
- ☐ Key Access محدود است.
- ☐ Key Recovery Plan وجود دارد.
- ☐ Multisig/MPC در صورت استفاده تست شده است.
Withdrawal
- ☐ Withdrawal Authentication تست شده است.
- ☐ Transaction Authorization تست شده است.
- ☐ Withdrawal Limit فعال است.
- ☐ Rate Limit فعال است.
- ☐ Address Change Security بررسی شده است.
- ☐ Withdrawal Monitoring فعال است.
- ☐ Approval برای تراکنشهای حساس وجود دارد.
- ☐ سناریوی Suspicious Withdrawal تست شده است.
Trading
- ☐ Matching Engine تست شده است.
- ☐ Order Validation بررسی شده است.
- ☐ Race Condition بررسی شده است.
- ☐ Balance/Order Consistency تست شده است.
- ☐ Ledger Integrity بررسی شده است.
- ☐ Fee Calculation تست شده است.
Monitoring
- ☐ Security Logging فعال است.
- ☐ Admin Actions ثبت میشوند.
- ☐ Withdrawal Events ثبت میشوند.
- ☐ Authentication Events ثبت میشوند.
- ☐ Alerting فعال است.
- ☐ Monitoring Dashboard آماده است.
- ☐ Log Integrity و Access Control بررسی شدهاند.
Recovery
- ☐ Backup فعال است.
- ☐ Backup رمزنگاری و محافظت شده است.
- ☐ Restore Test انجام شده است.
- ☐ RTO مشخص است.
- ☐ RPO مشخص است.
- ☐ Disaster Recovery Runbook وجود دارد.
Testing
- ☐ Vulnerability Assessment انجام شده است.
- ☐ Penetration Test انجام شده است.
- ☐ API Security Test انجام شده است.
- ☐ Business Logic Test انجام شده است.
- ☐ Critical Findings رفع شدهاند.
- ☐ High Findings تعیین تکلیف شدهاند.
- ☐ Retest انجام شده است.
Incident Response
- ☐ Incident Response Plan وجود دارد.
- ☐ مسئول Incident مشخص است.
- ☐ سناریوی Admin Compromise تست شده است.
- ☐ سناریوی API Key Compromise تست شده است.
- ☐ سناریوی Wallet Compromise بررسی شده است.
- ☐ سناریوی Database Breach بررسی شده است.
- ☐ سناریوی DDoS بررسی شده است.
- ☐ Communication Plan وجود دارد.
سوالات متداول درباره امنیت صرافی ارز دیجیتال
آیا قبل از راهاندازی صرافی ارز دیجیتال حتماً باید تست نفوذ انجام شود؟
برای یک پلتفرم مالی با ریسک بالا، تست نفوذ بخش مهمی از فرآیند اعتبارسنجی امنیت است؛ اما بهتنهایی کافی نیست و باید کنار Code Review، Vulnerability Assessment، API Testing و بررسی معماری انجام شود.
آیا فعال کردن 2FA برای امن شدن صرافی کافی است؟
خیر. 2FA فقط بخشی از Authentication است. Session، Authorization، API، Withdrawal و Transaction Authorization نیز باید بهصورت جداگانه بررسی شوند.
مهمترین بخش امنیت صرافی چیست؟
یک بخش واحد وجود ندارد. اما Wallet/Key Management، Withdrawal، Privileged Access، API Authorization، Authentication و Business Logic معمولاً از حساسترین حوزهها هستند.
Hot Wallet بهتر است یا Cold Wallet؟
این دو جایگزین مطلق یکدیگر نیستند. Hot Wallet برای عملیات آنلاین کاربرد دارد و Cold Storage میتواند Exposure آنلاین ذخایر را کاهش دهد. معماری مناسب به مدل کسبوکار، نقدینگی، فرآیند برداشت و Risk Model بستگی دارد.
آیا WAF جلوی هک صرافی را میگیرد؟
خیر. WAF یک لایه دفاعی است و جایگزین Secure Coding، Authorization، Patch Management، Penetration Testing و کنترلهای معماری نمیشود.
آیا API صرافی باید جداگانه تست شود؟
بله. APIها سطح حمله بسیار مهمی هستند و ریسکهایی مانند Broken Object Level Authorization، Broken Authentication و Unrestricted Resource Consumption باید بررسی شوند.
آیا Backup بهتنهایی برای Disaster Recovery کافی است؟
خیر. Backup باید قابل Restore باشد و برای آن RTO، RPO و Runbook مشخص داشته باشید.
آیا استفاده از اسکریپت آماده صرافی امنیت را تضمین میکند؟
خیر. هیچ محصول یا اسکریپتی صرفاً به دلیل آماده بودن، امنیت را تضمین نمیکند. باید Source/Architecture، Configuration، Dependencies، API، Wallet Integration و Business Logic متناسب با محیط واقعی بررسی و تست شوند.
امنیت CEX با P2P چه تفاوتی دارد؟
CEX معمولاً ریسک بیشتری در نقاط متمرکز مانند Admin، Wallet، Ledger و Withdrawal دارد؛ در P2P، علاوه بر امنیت فنی، Escrow، Fraud، Dispute و State Transition اهمیت زیادی پیدا میکنند.
چه زمانی میتوان گفت صرافی آماده Go-Live است؟
زمانی که کنترلهای حیاتی پیادهسازی، تست و مستندسازی شده باشند، Findings مهم تعیین تکلیف شده باشند، Recovery و Incident Response آزمایش شده باشند و مالک کسبوکار و تیم فنی از Riskهای باقیمانده آگاه و مسئولیت آنها مشخص باشد.
آیا امنیت را میتوان بعد از Launch انجام داد؟
برخی فعالیتهای امنیتی باید بهصورت مستمر بعد از Launch ادامه پیدا کنند، اما اولین ارزیابی امنیتی نباید به بعد از Launch موکول شود. اصلاح معماری و فرآیندهای حساس پس از ورود پول واقعی معمولاً ریسک و هزینه بیشتری دارد.
جمعبندی
امنیت صرافی ارز دیجیتال یک Feature نیست که در آخر پروژه به سیستم اضافه شود. امنیت، مجموعهای از کنترلهای فنی، معماری، مالی و عملیاتی است که باید قبل از ورود کاربران و دارایی واقعی اعتبارسنجی شوند.
مهمترین نکته این است که به یک تست یا یک ابزار وابسته نباشید.
یک صرافی برای Launch باید بتواند همزمان نشان دهد که:
- زیرساخت آن Hardening شده است؛
- API و Authorization تست شدهاند؛
- Authentication و Session درست طراحی شدهاند؛
- دسترسی Adminها کنترل شده است؛
- Private Key و Secrets به شکل مناسب مدیریت میشوند؛
- Withdrawal دارای کنترلهای چندلایه است؛
- Trading و Ledger از نظر Business Logic بررسی شدهاند؛
- Logging و Monitoring فعال هستند؛
- Backup واقعاً قابل بازیابی است؛
- Incident Response آماده است؛
- و یافتههای مهم تستهای امنیتی رفع و Retest شدهاند.
هدف امنیت این نیست که ادعا کنیم صرافی «غیرقابل هک» است؛ چنین تضمینی واقعبینانه نیست. هدف، کاهش سطح حمله، محدودکردن Impact، شناسایی سریع حادثه و ایجاد توانایی پاسخ و بازیابی است.
اگر قرار است صرافی پیش از Launch ارزیابی شود، بهتر است همین چکلیست به یک Security Gate رسمی تبدیل شود و هر مورد با وضعیت «انجام شده، نیازمند اصلاح، مستثنی با Risk Acceptance یا تأیید نشده» ثبت شود.

