امنیت با نصب چند ابزار شروع نمیشود. اول مشخص کن چه چیز ارزشمند است، چه کسی ممکن است به آن حمله کند و داده از کجا به کجا میرود. بعد برای هر API روشن کن چه کسی، روی کدام داده و با چه محدودیتی حق انجام کار دارد.
فرایند تهدیدشناسی
- داراییها را بنویس: پول، PII، credential، availability و audit log. سپس data-flow diagram و trust boundary بکش.
- برای هر جریان STRIDE را مرور کن: Spoofing، Tampering، Repudiation، Information disclosure، Denial of service، Elevation of privilege.
- کنترل و owner و روش آزمون هر تهدید را ثبت کن؛ threat model سند زندهٔ هر تغییر معماری است.
خطاهای رایج API: BOLA/IDOR (دسترسی به resource دیگر با تغییر ID)، mass assignment، injection، SSRF و leak در log. شناسه غیرقابل حدس کمک میکند اما authorization server-side درمان اصلی است. PII را در log/token/URL نگذار و retention/delete policy را از طراحی data model جدا نکن.
به زبان ساده
امنیت از فهرستکردن شروع میشود: چه چیزی ارزشمند است، چه کسی حمله میکند و هر API باید چه چیزی را چک کند — بعد سراغ ابزار میرویم.
مثال واقعی
کاربر در آدرس /orders/1042 عدد را به 1043 تغییر میدهد؛ اگر API فقط «وجود» سفارش را چک کند، سفارش شخص دیگر را میبیند. باید owner_id با کاربر لاگینشده یکی باشد.