قائمة فحص أمان API: Rate Limiting والتحقق من المدخلات وتكوين CORS
تأمين APIs مع rate limiting والتحقق من المدخلات وتكوين CORS. قائمة فحص مختبرة إنتاجياً تغطي المصادقة والتشفير ومعالجة الأخطاء.
مقدمة
واجهات البرمجة هي سطح الهجوم للتطبيقات الحديثة. كل نقطة نهاية هي نقطة دخول محتملة للمهاجمين. يغطي هذا الدليل تقنيات التقوية العملية التي طبقتها لتأمين واجهات البرمجة في الإنتاج.
التحقق من المدخلات
التحقق القائم على المخطط
import { z } from 'zod'; const createUserSchema = z.object({ email: z.string() .email('تنسيق بريد إلكتروني غير صالح') .max(255) .transform(email => email.toLowerCase()), password: z.string() .min(12, 'كلمة المرور يجب أن تكون 12 حرفاً على الأقل') .regex(/[A-Z]/, 'يجب أن تحتوي على حرف كبير') .regex(/[0-9]/, 'يجب أن تحتوي على رقم'), name: z.string() .min(1) .max(100) .regex(/^[\u0600-\u06FFa-zA-Z\s'-]+$/, 'الاسم يحتوي على أحرف غير صالحة'), }); function validateBody<T extends z.ZodType>(schema: T) { return (req: Request, res: Response, next: NextFunction) => { const result = schema.safeParse(req.body); if (!result.success) { return res.status(400).json({ error: 'فشل التحقق', details: result.error.issues, }); } req.body = result.data; next(); }; }
تحديد المعدل
تحديد المعدل المتدرج
const rateLimiters = { auth: rateLimit({ windowMs: 15 * 60 * 1000, max: 5, keyGenerator: (req) => req.body.email || req.ip, }), api: rateLimit({ windowMs: 60 * 1000, max: 100, keyGenerator: (req) => req.user?.id || req.ip, }), }; app.use('/api/auth', rateLimiters.auth); app.use('/api', rateLimiters.api);
رؤوس الأمان
import helmet from 'helmet'; app.use(helmet({ contentSecurityPolicy: { directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'"], styleSrc: ["'self'", "'unsafe-inline'"], }, }, hsts: { maxAge: 31536000, includeSubDomains: true, }, }));
تكوين CORS
const corsOptions = { origin: ['https://app.example.com'], methods: ['GET', 'POST', 'PUT', 'DELETE'], credentials: true, }; app.use(cors(corsOptions));
الخلاصة
أمان واجهات البرمجة يتطلب دفاعاً متعدد الطبقات:
- تحقق من جميع المدخلات بمخططات صارمة
- حدد المعدل بناءً على حساسية نقطة النهاية
- اضبط رؤوس الأمان بشكل مناسب
- كوّن CORS بشكل مقيد
- سجّل بأمان للتدقيق والتصحيح
الأمان ليس اختيارياً - إنه متطلب أساسي لأي واجهة برمجة إنتاجية.
مقالات ذات صلة
هندسة الأمانقراءة 23 دقيقة
أفضل ممارسات مصادقة JWT: Refresh Tokens و RBAC و OAuth 2.0
تنفيذ مصادقة JWT آمنة مع تدوير refresh token و RBAC وتدفقات OAuth 2.0. أنماط إنتاجية من أنظمة الرعاية الصحية والحكومة.
هندسة الأمانقراءة 18 دقيقة
كيفية منع SQL Injection و XSS: دليل الوقاية الكامل مع الكود
منع هجمات SQL injection و NoSQL injection و XSS مع أنماط كود مُتحقق منها. يغطي الاستعلامات المعاملة وتعقيم المدخلات وتكوين CSP.
هندسة الأمانقراءة 17 دقيقة
أمان إدارة الجلسات: إعدادات الكوكيز وتدوير التوكن وتسجيل الخروج
تنفيذ إدارة جلسات آمنة مع إعدادات كوكيز صحيحة وتدوير التوكن وتدفقات تسجيل الخروج. يغطي تثبيت الجلسة ومنع الاختطاف والتعامل متعدد الأجهزة.
هندسة البرمجياتقراءة 21 دقيقة
كيفية بناء أنظمة موزعة متسامحة مع الأخطاء: أنماط Circuit Breaker و Retry و Timeout
بناء أنظمة موزعة مرنة مع circuit breakers و retries و timeouts. أنماط إنتاجية للتعامل مع الفشل والأخطاء المتتالية والحفاظ على التوفر.
تصميم الخلفيةقراءة 21 دقيقة
REST مقابل GraphQL مقابل gRPC: مقارنة API الكاملة (الأداء وحالات الاستخدام)
قارن REST و GraphQL و gRPC APIs مع معايير الأداء وحالات الاستخدام. تعلم أي نمط API يناسب مشروعك بناءً على خبرة إنتاجية حقيقية.