أمن واجهة برمجة التطبيقات وطلب التصفية
1) لماذا تحتاجه
API - حدود المنصة الخارجية والداخلية. أي خطأ في التوثيق أو الإذن أو المصادقة أو تطبيع الطلبات يتحول إلى استغلال لنقاط الضعف (BOLA/IDOR، الحقن، SSRF، التعداد الهائل، استنفاد الموارد). الغرض: إنشاء دفاع متعمق من المحيط إلى قواعد الأعمال، مع SLOs قابلة للقياس والتحكم في المخاطر.
2) جرد وتصنيف واجهة برمجة التطبيقات
دليل واجهة برمجة التطبيقات: سجل جميع الخدمات/نقاط النهاية، المالكين، الإصدارات، أنواع العملاء (الويب، الهاتف المحمول، الشركاء)، الوضع (العام/الشريك/الداخلي)، PII/البيانات المالية.
الأهمية الحيوية: مرتفع (المعاملات المالية/الإذن)، متوسط (قراءة موجز)، منخفض (أدلة عامة).
سطح الهجوم: REST و GraphQL و gRPC و WebSocket و webhooks.
الحالة: prod/staging/expertential, disrecte policy, token/key lifetime.
الظل/واجهة برمجة التطبيقات المهجورة: الكشف من خلال سجلات السبق، والقياس عن بعد eBPF/Service Mesh، والمقارنة مع الدليل.
3) نموذج التهديد (موجز)
تحديد الهوية: اختطاف الرموز، التزام الجلسة، MitM، إعادة التشغيل.
الإذن: BOLA/IDOR، التصعيد الأفقي/الرأسي.
المدخلات: الحقن (SQL/NoSQL/LDAP)، النموذج/التسلسل، اجتياز المسار، الرؤوس.
حركة المرور: فيضانات DDoS/L7، طلبات بطيئة، عودة وهمية.
عمليات التكامل: خطوط الويب غير الآمنة، SSRF عبر معلمات URL، تنزيلات الملفات/المسح.
المنطق: إساءة استخدام المكافآت، والسباق، وعدم اتساق الغباء.
4) معيار السلامة الأساسي (الحد الأدنى)
1. TLS 1. 2 + في كل مكان ؛ HSTS ؛ يتم تعطيل الشفرات الضعيفة.
2. المصادقة: OAuth2/OIDC للعملاء، mTLS/أو HMAC - خدمة إلى خدمة.
3. الإذن: مركز PDP (RBAC/ABAC)، فحص مستوى الكائن (BOLA).
4. التحقق: مخطط صارم (OpenAPI/JSON Schema/Protobuf)، فشل مع مجالات إضافية.
5. الحدود: السعر/الحصص + الانفجار، لكل عميل/لكل IP/لكل رمز.
6. الاختصاص في عمليات الكتابة، والحماية من التكرار/الأعراق.
7. تصفية WAF/البوابة: تطبيع المسار/الرأس، قوائم الرفض، كتلة أنماط مضادة للحمولة.
8. الأسرار: KMS/Vault، تناوب المفتاح/الشهادة، التحكم في التسرب.
9. إمكانية الملاحظة: التعقب، سجلات التدقيق الأمني (من/ماذا/متى/النتيجة)، التنبيهات.
10. الإجراءات: حوادث قواعد اللعبة وحالات الاختبار والبنتات العادية/DAST.
5) التوثيق وإدارة الرموز
OAuth2/OIDC: رموز الوصول القصيرة الأجل، وتحديثها بدقة وفقا لمكتب التنمية الدولية ؛ يتم فحص الجمهور/المُصدر/exp على البوابة.
JWT: RS256/ES256; والمجموعة الدنيا من المحار ؛ 'nbf/exp/aud' مطلوب ؛ حظر تخزين PII. التناوب الرئيسي عبر JWKS.
DPoP/POP: ربط رمز مفتاح العميل لتقليل مخاطر إعادة التشغيل/الاختطاف.
MTLS للنظم الداخلية والشركاء الموثوق بهم (مؤهل CN/SAN، CRL/OCSP).
HMAC (التوقيعات): التقنين الحتمي (طريقة + مسار + طابع زمني + غير مؤقت + تجزئة الجسم) ؛ نافذة زمنية صالحة (30 ±).
جلسات المتصفح: SameSite = strict/lax, HttpOnly, Secure; حماية CSRF (رموز تقديم/ولاية مزدوجة).
تخزين العملاء: على الهاتف المحمول - التخزين الآمن (Keychain/Keystore)، حماية التنقيح، شهادات التثبيت.
6) الإذن (BOLA-first)
مستوى الكائن: تتحقق كل عملية من الحق في مورد معين (مالك الموارد/النطاق/الخصائص).
المكتب الإقليمي لآسيا والمحيط الهادئ/ABAC: الأدوار + الخصائص (البلد، القطاع، حدود المخاطر، مستوى KYC)
السياسات: الرفض الافتراضي ؛ السماح صراحة ؛ اختبارات وضع السياسات للحالات السلبية.
ذاكرة التخزين المؤقت للقرار: إعاقة TTL + التكيفية في الأدوار/القطاعات المتغيرة.
7) تصفية الطلبات وتطبيعها (على البوابة/WAF)
التطبيع: ضغط القطع المتكررة، الحظر «../»، فك التشفير مرة واحدة، تقليم المساحات/صفر بايت.
الرؤوس: قائمة السماح («المضيف»، «نوع المحتوى»، «قبول»، «الإذن»، «التاريخ»، «Idempotency-Key»، الرؤوس النزرة اللازمة).
الأساليب: 'GET/HEAD' بدون جسد ؛ «POST/PUT/PATCH» - مع نوع «تطبيق/جسون» أو مسموح به تمامًا.
الأبعاد: الحد الأقصى للجسم، الحد الأقصى للرأس، المسار الأقصى ؛ الرفض المبكر 413/431.
الملفات: مصدق MIME، مضاد الفيروسات/صندوق الرمل، حظر المحتوى النشط، إعادة تدوير/تعقيم الصور.
إعادة توجيه عنوان 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، لكل مستخدم، لكل org.
الحصص: يومية/شهرية، منفصلة للكتابة/الأساليب الشاملة.
التكيف: التشديد الديناميكي تحت الشذوذ (الانفجار المفاجئ/حشو الاعتماد).
Slow-loris/slow-POST: اقرأ/ابق على قيد الحياة، تقييد الاتصال المتزامن.
Antibot: بصمة الجهاز، العلامات السلوكية، إثبات العمل/الكابتشا لزيادة المخاطر، قائمة شبكات التوروس/الوكيل.
التحكم في بروتوكول الإنترنت: مرشحات geo/ASN، ورفض قوائم الشبكات الفرعية «القذرة»، والسماح بقوائم للشركاء/اللوحات الإدارية.
9) التحقق من بيانات المدخلات والدوائر
إغلاق الفشل: كل ما يفشل في المخطط هو 400. حقول إضافية - ارفض.
الأنواع/النطاقات: الأرقام، التواريخ (UTC/ISO-8601)، قيم إينوم، أطوال الخط، regexps.
جودة JSON: التعشيش الأقصى، حظر المصفوفات/المفاتيح الكبيرة، النظام القانوني (اختياري).
التحقق من صحة الأعمال التجارية: الخصوصية وفقاً لـ «مفتاح الخصوصية» ؛ قواعد مكافحة الغش (حدود تردد التشغيل، الحدود القصوى للمبالغ).
الرسم البياني QL: حدود العمق/التعقيد، الاستفسارات المدرجة في القائمة، الإذن لكل حقل.
gRPC: مخططات Protobuf الصارمة، الحقول الإلزامية، حدود حجم الرسالة.
10) شبكات الويب والمكالمات الخارجية
التوقيعات: HMAC مع طابع زمني/nonce ؛ والتحقق قبل التجهيز ؛ النافذة +/- 5 دقائق.
التسليم: Retrai مع وقفة أسية ونفث ؛ والمحاولات القصوى ؛ تفريغ معرف الحدث
البائع IP القائمة المنفصلة subdomain/path; الحد الأدنى من مكدس الاستضافة.
الإجابات: 2xx فقط بعد تسجيل داخلي ناجح ؛ بخلاف ذلك 4xx/5xx برمز واضح.
التحكم الصادر في SSRF: عند الاستدعاء URL - قائمة السماح، ارفض العناوين الخاصة.
11) التشفير والإدارة السرية
في القناة: TLS 1. 2+/1. 3، التثبيت، سياسة التشفير الصارمة.
وحده: DB/object storage centryption، مفاتيح منفصلة لـ PII/financial data.
KMS/Vault: التخزين المركزي للأسرار، TTL القصير، الدوران التلقائي.
المفاتيح والشهادات: منفصلة عن البيئات ؛ ومراجعة المسائل ؛ حظر إنتاج جذوع الأشجار.
الاستبطان الرمزي: قوائم الإلغاء غير المتصلة بالإنترنت، «exp» قصيرة.
12) قابلية الملاحظة ومراجعة الحسابات والاستجابة
سجلات الأمن: محاولات المصادقة/النجاحات، فشل الإذن، أحداث الحد الأقصى للمعدل، تغييرات الدور/الحد.
التعقب: الارتباط - الهوية من طرف إلى طرف ؛ تتبع المكالمات الخارجية.
المقاييس: RPS، زمن P95/P99، معدل الخطأ بالرمز، حصة 401/403/429، حدود معدل الضرب، الحالات الشاذة.
التنبيهات: طفرات 401/403/429، نمو 5xx، صراعات الخصوصية المتكررة، انحرافات حادة في الرسم البياني المعقد QL.
كتب اللعب: حظر المفاتيح/الرموز المميزة، التراجع السريع عن القواعد، تسخين قائمة الرفض، إخطار مالكي الخدمة.
الطب الشرعي: الحفاظ على الحمولة المثيرة للجدل (مع تحرير PII آمن)، وإعادة التشغيل على حامل معزول.
13) أخطاء وإجابات للعميل
تنسيق الخطأ الموحد (الرمز، الرسالة، التعقب، الفئة).
لا توجد تسريبات: لا تكشف عن SQL، أسماء جداول، معطيات داخلية ؛ 403 بدلا من «لماذا لا».
الرموز: 400 (التحقق)، 401 (بدون توثيق)، 403 (بدون حقوق)، 404 (وجود قناع)، 405/406، 413/429، 500/503.
Retry-Hints: для 429 - 'Retry-After'; - إسداء المشورة بشأن التكرار بنفس المفتاح.
14) الأنماط المعمارية
Zero-Trust: mTLS، تفويض صريح بين جميع الخدمات، الحد الأدنى من الامتيازات.
بوابة API + شبكة خدمة WAF +: فصل الواجبات - المحيط، سياسات L7، المصادقة الداخلية.
كناري/أزرق أخضر: طرح قواعد ترشيح جديدة على مراحل مع الإشراف.
إغلاق الفشل: بالنسبة للكتابة النقدية، من الأفضل الرفض بأمان بدلاً من السماح بتشغيل غير صحيح.
الضغط الخلفي: قوائم الانتظار/المآزق، قاطع الدائرة، المهلات/الميزانيات.
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 حد الرسم البياني QL
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) تفاصيل iGaming/Finance
حدود القطاعات: اعتماداً على موجز بيانات المخاطر/القطرية/القطرية.
النوافذ الزمنية: قواعد تردد الإيداع/السحب، «التبريد» بين المعاملات.
مكافأة ضد إساءة الاستخدام: أقفال متسقة على الحساب/الجهاز/IP/أداة الدفع.
مراجعة المتطلبات التنظيمية: تخزين سجلات الإجراءات والقرارات (KYC/AML)، وفترات الاحتفاظ، والسجلات التي لم تتغير.
17) حث قائمة التحقق الجاهزة
- دليل واجهة برمجة التطبيقات الكامل وخريطة تدفق البيانات (PII/financial tagen).
- مخططات OpenAPI/Protobuf واختبارات التحقق والعقود في CI.
- mTLS/HMAC/OAuth2 شكلت ؛ رموز TTL القصيرة ؛ دوران المفتاح.
- اختبارات BOLA وحالات الإذن السلبي ؛ PDP المركزي.
- الحدود/الحصص/مكافحة الروبوت، الحماية من اللوريس البطيء ؛ مرشحات بروتوكول الإنترنت.
- قواعد تطبيع WAF/البوابة، والتوقيعات المضادة للحقن.
- فراغ عمليات الكتابة ؛ الحماية من إعادة التشغيل.
- التوقيعات الشبكية وقائمة السماح ؛ نقاط النهاية المعزولة.
- أسرار في KMS/Vault ؛ والمخازن المشفرة ؛ تنبيهات إلى حالات شاذة.
- لوحات المعلومات والإنذارات وسجلات مراجعة الحسابات ؛ حوادث كتب اللعب.
- pentest/DAST/SAST العادية، مسارات الضعف وتنزيل التصحيح.
18) مضادات البتر (وهو أمر غير ممكن)
Trust' X-Forwarded - "بدون TLS الصارمة على محيطها.
قبول مخططات JSON التعسفية «نوع المحتوى» و «الناعمة».
JWTs طويلة العمر دون استدعاء/تناوب.
مزج الأدوار وقواعد العمل في الكود بدون سياسات مركزية.
سجلات مع أسرار/PII ؛ تفصيل 500 رسالة إلى الخارج.
نقاط نهاية مفتوحة «مؤقتة» بدون حدود وإذن.
19) الإصدار وديبريكيت
إصدارات في المسار/الرأس ؛ سياسة الدعم (على سبيل المثال N-2).
الإعلانات: المواعيد النهائية للنقض، ومراقبة استخدام الإصدارات القديمة، والإغلاق الخاضع للرقابة.
التوافق: عقود العملاء/الشركاء ومصفوفات الاختبار.
20) اختبار السلامة
اختبارات العقود للمخططات/السياسات، المدخلات المزعجة، السلبية auth.
موجزات الأداء مع حدود/حصص، اختبار الحماية (حركة الفوضى).
الفريق الأحمر/مكافأة الأخطاء: نصوص BOLA، SSRF، التوقيعات/الإعادة، تعقيد GraphQL.
TL; د
1. دليل واجهة برمجة التطبيقات + مخططات صارمة.
2. OAuth2/OIDC للعملاء، mTLS/HMAC بالداخل.
3. محيط BOLA لكل مورد (ABAC/RBAC).
4. الترشيح: تطبيع المسارات/الرؤوس، الحدود، قواعد WAF.
5. الفراغ، التوقيعات، إعادة التشغيل/حماية SSRF.
6. KMS/Vault والتناوب السري.
7. إمكانية الملاحظة، التنبيهات، كتب اللعب.