امنیت API و درخواست فیلتر کردن
1) چرا شما به آن نیاز دارید
API - مرز پلت فرم خارجی و داخلی. هر گونه خطا در احراز هویت، مجوز، اعتبار سنجی یا عادی سازی درخواست ها به بهره برداری از آسیب پذیری ها تبدیل می شود (BOLA/IDOR، تزریق، SSRF، شمارش عظیم، خستگی منابع). هدف: ایجاد دفاع در عمق از محیط به قوانین کسب و کار، با SLO قابل اندازه گیری و کنترل ریسک.
2) API موجودی و طبقه بندی
دایرکتوری API: ثبت نام از تمام خدمات/نقاط پایانی, صاحبان, نسخه های, انواع مشتری (وب, سیار, همکاران), حالت (عمومی/شریک/داخلی), PII/داده های مالی.
انتقاد: بالا (معاملات مالی/مجوز)، متوسط (خواندن مشخصات)، پایین (دایرکتوری های عمومی).
سطح حمله: REST، GraphQL، gRPC، WebSocket، webhooks.
وضعیت: prod/staging/experimental, سیاست مستهلک, token/key lifetime.
سایه/رها API: تشخیص از طریق ورود سیاهههای مربوط، eBPF/مش سرویس تله متری، مقایسه با یک دایرکتوری.
3) مدل تهدید (کوتاه)
شناسایی: نشانه ربودن، جلسه مرتکب، MitM، پخش.
مجوز: BOLA/IDOR، افزایش افقی/عمودی.
ورودی: تزریق (SQL/NoSQL/LDAP)، قالب/سریال سازی، پیمایش مسیر، هدر ها.
ترافیک: سیل های DDoS/L7، درخواست های آهسته، بازخورد فانتوم.
یکپارچگی: وب سایت های ناامن، SSRF از طریق پارامترهای URL، بارگیری فایل/اسکن.
منطق: سوء استفاده از پاداش، مسابقه، ناسازگاری idempointence.
4) استاندارد ایمنی پایه (حداقل)
1. TLS 1. 2 + در همه جا HSTS ؛ رمزهای ضعیف غیرفعال میشوند.
2. احراز هویت: OAuth2/OIDC برای مشتریان، mTLS/یا HMAC - سرویس به سرویس.
3. مجوز: PDP متمرکز (RBAC/ABAC)، بازرسی سطح شیء (BOLA).
4. اعتبار سنجی: طرح سختگیرانه (OpenAPI/JSON Schema/Protobuf)، شکست با زمینه های اضافی.
5. محدودیت ها: نرخ/سهمیه + پشت سر هم، در هر مشتری/در هر IP/در هر رمز.
6. Idemotence در عملیات نوشتن، حفاظت در برابر تکرار/نژادها.
7. WAF/دروازه فیلتر: مسیر/نرمال هدر، لیست انکار، محموله ضد الگوهای بلوک.
8. اسرار: KMS/خرک، چرخش کلید/گواهی، کنترل نشت.
9. قابلیت مشاهده: ردیابی، گزارش های حسابرسی امنیتی (چه کسی/چه/چه زمانی/نتیجه)، هشدارها.
10. روش ها: حوادث playbook، موارد آزمون و pentests به طور منظم/DAST.
5) احراز هویت و مدیریت نشانه
OAuth2/OIDC: نشانه های دسترسی کوتاه مدت، تازه کردن به شدت با توجه به OIDC ؛ audience/issuer/exp در دروازه بررسی می شود.
JWT: RS256/ES256 ؛ حداقل مجموعه ای از صدف ؛ 'nbf/exp/aud' مورد نیاز است ؛ ممنوعیت ذخیره سازی PII. چرخش کلید از طریق JWKS.
DPoP/PoP: نشانه را به کلید مشتری متصل کنید تا خطر پخش/ربودن را کاهش دهد.
mTLS برای سیستم های داخلی و شرکای مورد اعتماد (صلاحیت CN/SAN، CRL/OCSP).
HMAC (امضا): کانونیکالیزاسیون قطعی (روش + مسیر + برچسب زمانی + nonce + بدن هش) ؛ پنجره زمان معتبر (± 30s).
جلسات مرورگر: SameSite = strict/lax، HttpOnly، Secure ؛ حفاظت CSRF (دو ارسال/نشانه دولت).
ذخیره سازی مشتری: در ذخیره سازی امن تلفن همراه (Keychain/Keystore)، حفاظت از اشکال زدایی، گواهینامه های پین کردن.
6) مجوز (BOLA اول)
Object-level: هر عملیات حق دسترسی به یک منبع خاص (مالک منبع/دامنه/ویژگی ها) را بررسی می کند.
RBAC/ABAC: نقش ها + ویژگی ها (کشور، بخش، محدودیت خطر، سطح KYC)
سیاست ها: انکار به طور پیش فرض ؛ صریح اجازه می دهد ؛ تست های نسخه بندی سیاست برای موارد منفی.
کش تصمیم گیری: سازگاری TTL + ناتوانی در تغییر نقش/بخش.
7) فیلتر کردن و عادی سازی درخواست ها (در دروازه/WAF)
عادی سازی: فشرده سازی برش های مکرر، ممنوعیت '../'، رمزگشایی یک بار، برش فضاهای/صفر بایت.
هدر: اجازه لیست («میزبان»، «محتوا نوع»، «پذیرش»، «مجوز»، «تاریخ»، «Idempotency-Key»، هدر ردیابی لازم).
روش ها: «GET/HEAD» بدون بدن ؛ 'POST/PUT/PATCH' - با نوع 'application/json' یا به شدت مجاز است.
ابعاد: حداکثر بدن، حداکثر هدر، حداکثر مسیر ؛ در اوایل رد 413/431.
فایل ها: اعتبار سنج MIME، آنتی ویروس/sandbox، ممنوعیت محتوای فعال، بازیافت تصویر/ضدعفونی کردن.
URL تغییر مسیر/fetchi: بلوک SSRF (انکار محدوده های خصوصی/ابرداده IP، طرح فقط https، اجازه لیست دامنه).
الگوهای SQL/NoSQL: امضاهای تزریق از طریق مجموعه قوانین WAF + پارامتری سرور پرس و جوها.
سیاست هدر مثال (قالب شبه)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) محدودیت ها، سهمیه ها و حفاظت ضد ربات
محدود کردن نرخ: سطل نشانه/سطل نشتی ؛ سطوح - در هر IP، در هر کلید API، در هر کاربر، در هر سازمان.
سهمیه: روزانه/ماهانه، جداگانه برای نوشتن/روش های گسترده.
سازگاری: سفت شدن پویا تحت ناهنجاری ها (انفجار ناگهانی/چاشنی اعتبار).
Slow-loris/slow-POST: خواندن/زنده نگه داشتن زمان، محدودیت اتصال همزمان.
Antibot: اثر انگشت دستگاه، علائم رفتاری، اثبات کار/captcha برای افزایش خطر، لیست شبکه های torus/proxy.
کنترل IP: فیلترهای geo/ASN، لیست های زیر شبکه های «کثیف» را رد می کنند، لیست ها را برای پانل های شرکا/مدیریت اجازه می دهند.
9) اعتبار سنجی داده ها و مدارهای ورودی
Fail-closed: هر چیزی که این طرح را با شکست مواجه کند 400 است. زمینه های اضافی - رد.
انواع/محدوده: اعداد، تاریخ (UTC/ISO-8601)، مقادیر enum، طول خط، regexps.
JSON-quality: حداکثر لانه سازی، ممنوعیت آرایه های بزرگ/کلید، نظم کانونی (اختیاری).
اعتبار کسب و کار: idempotency با توجه به 'Idempotency-Key' ؛ قوانین ضد تقلب (محدودیت فرکانس عملیات، کلاه مقدار).
GraphQL: محدودیت عمق/پیچیدگی، نمایش داده شد اجازه ذکر شده، مجوز در هر زمینه.
gRPC: طرحهای Protobuf سختگیرانه، فیلدهای اجباری، محدودیت اندازه پیام.
10) وب سایت ها و تماس های خارجی
امضا: HMAC با برچسب زمان/nonce ؛ تأیید قبل از پردازش ؛ پنجره +/- 5 دقیقه.
تحویل: Retrai با مکث نمایشی و لرزش ؛ حداکثر تلاش ؛ شناسه رویداد
فروشنده IP اجازه می دهد لیست زیر دامنه جداگانه/مسیر ؛ حداقل پشته میزبانی.
پاسخ: 2xx تنها پس از ضبط داخلی موفق ؛ در غیر این صورت 4xx/5xx با کد روشن.
خروجی کنترل SSRF: هنگامی که URL پاسخ به تماس - اجازه لیست, انکار آدرس های خصوصی.
11) رمزگذاری و مدیریت مخفی
در کانال: TLS 1. 2+/1. 3، پینینگ، سیاست رمزنگاری دقیق.
تنها: رمزگذاری ذخیره سازی DB/object، کلیدهای جداگانه برای PII/داده های مالی.
KMS/Vault: ذخیره سازی متمرکز اسرار، TTL کوتاه، چرخش خودکار.
کلید ها و گواهینامه ها: جداگانه برای محیط ؛ بررسی مسائل ؛ ممنوعیت خروجی به سیاهههای مربوط.
Token-introspection: لیست های لغو آفلاین، کوتاه «exp».
12) مشاهده، حسابرسی و پاسخ
سیاهههای مربوط به امنیت: تلاش های احراز هویت/موفقیت، شکست مجوز، رویدادهای محدود کننده نرخ، تغییرات نقش/محدودیت.
ردیابی: همبستگی-شناسه پایان به پایان ؛ ردیابی تماس خارجی
معیارها: RPS، تأخیر P95/P99، نرخ خطا توسط کد، سهم 401/403/429، محدودیت نرخ ضربه، ناهنجاری ها.
هشدارها: خوشه های 401/403/429، رشد 5xx، درگیری های مکرر idempointency، انحرافات شدید نمودار پیچیدگی QL.
Playbooks: مسدود کردن کلید/نشانه، به سرعت نورد به عقب قوانین، گرم کردن لیست انکار، اطلاع صاحبان خدمات.
پزشکی قانونی: حفظ محموله بحث برانگیز (با ویرایش PII امن)، پخش در یک موضع جدا شده است.
13) خطاها و پاسخ به مشتری
فرمت خطای یکنواخت (کد، پیام، ردیابی شناسه، دسته).
بدون نشت: SQL، نام جدول، idies داخلی را فاش نکنید. 403 به جای «چرا که نه»
کدهای: 400 (اعتبار سنجی)، 401 (بدون احراز هویت)، 403 (بدون حقوق)، 404 (وجود ماسک)، 405/406، 413/429، 500/503.
نکات مجدد: для 429 - «Retry-After» ؛ برای idemotency - مشاوره در تکرار با همان کلید.
14) الگوهای معماری
Zero-Trust: mTLS، مجوز صریح بین تمام خدمات، حداقل امتیازات.
دروازه API + WAF + مش سرویس: جدایی از وظایف - محیط، سیاست های L7، احراز هویت داخلی.
Canary/Blue-Green: قوانین فیلتراسیون جدید را در مراحل با نظارت اجرا کنید.
Fail-closed: برای نوشتن بحرانی، بهتر است با خیال راحت از انجام عملیات نادرست خودداری کنید.
فشار پشتی: صف/بافر، قطع کننده مدار، زمان بندی/بودجه.
15) نمونه هایی از قوانین عملی (شبه پیکربندی)
15. 1 محدود کردن مسیرها و روش ها
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 عدم توانایی
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 امضای درخواست (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 حفاظت SSRF
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 حد GraphQL
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) ویژگی های iGaming/امور مالی
محدودیت های بخش: بسته به مشخصات CCM/کشور/خطر.
پنجره زمان: قوانین فرکانس سپرده/برداشت، «خنک کردن» بین معاملات.
پاداش ضد سوء استفاده: قفل سازگار در حساب/دستگاه/IP/ابزار پرداخت.
حسابرسی از الزامات قانونی: ذخیره سازی سیاهههای مربوط از اقدامات و تصمیمات (KYC/AML)، دوره نگهداری، سیاهههای مربوط بدون تغییر.
17) تولید لیست آماده
- دایرکتوری API کامل و داده ها نقشه جریان (PII/financials برچسب).
- طرحوارههای OpenAPI/Protobuf، آزمونهای اعتبارسنجی و قراردادها در CI.
- mTLS/HMAC/OAuth2 پیکربندی شده ؛ نشانه های TTL کوتاه ؛ چرخش کلید
- آزمایش BOLA و موارد مجوز منفی ؛ PDP متمرکز شده است.
- محدودیت/سهمیه/ضد ربات، حفاظت در برابر آهسته loris ؛ فیلترهای IP
- قوانین عادی سازی WAF/دروازه، امضاهای ضد تزریق.
- Idempotency عملیات نوشتن ؛ محافظت در برابر replay
- امضای Webhook و اجازه لیست ؛ نقاط پایانی جدا شده
- اسرار در KMS/طاق ؛ ذخیره سازی رمزگذاری شده ؛ هشدار به ناهنجاریها
- داشبورد، هشدار، سیاهههای مربوط به ممیزی ؛ حوادث playbooks کار می کرد.
- به طور منظم pentest/DAST/SAST، آهنگ آسیب پذیری و دانلود پچ.
18) ضد آفات (که امکان پذیر نیست)
اعتماد «X-Forwarded» بدون TLS سفت و سخت در محیط آن است.
طرح های JSON دلخواه «Content-Type» و «soft» را بپذیرید.
JWT های طولانی مدت بدون یادآوری/چرخش.
نقش ها و قوانین کسب و کار را در کد بدون سیاست های متمرکز ترکیب کنید.
سیاهههای مربوط با اسرار/PII ؛ جزئیات 500 پیام به بیرون.
«موقت» نقطه پایان باز بدون محدودیت و مجوز.
19) نسخه و deprekate
نسخه ها در مسیر/هدر ؛ سیاست پشتیبانی (به عنوان مثال،. N-2)
اطلاعیه ها: مهلت برای مستهلک, نظارت بر استفاده از نسخه های قدیمی, خاموش کردن کنترل.
سازگاری: قراردادهای مشتری/شریک و ماتریس تست.
20) تست ایمنی
تست قرارداد طرح/سیاست، fuzzing ورودی، auth منفی.
پروفایل های عملکرد با محدودیت/سهمیه، آزمون حفاظت (ترافیک هرج و مرج).
Red-team/bug-bounty: اسکریپت های BOLA، SSRF، امضا/تکرار، پیچیدگی GraphQL.
TL ؛ دکتر متخصص
1. دایرکتوری API + طرح های سخت.
2. OAuth2/OIDC برای مشتریان، mTLS/HMAC در داخل.
3. محیط BOLA در هر منبع (ABAC/RBAC).
4. فیلتر کردن: عادی سازی مسیرها/هدر ها، محدودیت ها، قوانین WAF.
5. Idempotence، امضا، پخش/حفاظت SSRF.
6. KMS/خرک و چرخش مخفی.
7. قابلیت مشاهده، هشدارها، کتابهای بازی.