Node.js و Express
تحديد المعدل وأمان API
تحديد المعدل وأمان API
حماية API الخاص بك من الإساءة والهجمات أمر بالغ الأهمية للحفاظ على توفر الخدمة والأمان. يساعد تحديد المعدل وتنفيذ أفضل ممارسات الأمان في منع الأنشطة الضارة وضمان الاستخدام العادل للموارد بين جميع المستخدمين.
فهم تحديد المعدل
يتحكم تحديد المعدل في عدد الطلبات التي يمكن للمستخدم أو عنوان IP إجراؤها إلى API الخاص بك ضمن نافذة زمنية محددة:
لماذا تحديد المعدل؟
- منع هجمات DDoS والإساءة
- ضمان الاستخدام العادل لـ API عبر جميع المستخدمين
- الحماية من هجمات القوة الغاشمة
- التحكم في التكاليف لاستخدام API من طرف ثالث
- الحفاظ على توفر الخدمة والأداء
- الامتثال لحدود موارد البنية التحتية
تنفيذ تحديد المعدل باستخدام express-rate-limit
قم بتثبيت حزمة express-rate-limit:
npm install express-rate-limit
إعداد تحديد المعدل الأساسي:
const express = require('express');
const rateLimit = require('express-rate-limit');
const app = express();
// إنشاء محدد معدل
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 دقيقة
max: 100, // تحديد كل IP إلى 100 طلب لكل windowMs
message: 'طلبات كثيرة جدًا من هذا IP، يرجى المحاولة مرة أخرى لاحقًا.',
standardHeaders: true, // إرجاع معلومات حد المعدل في رؤوس `RateLimit-*`
legacyHeaders: false, // تعطيل رؤوس `X-RateLimit-*`
});
// تطبيق على جميع المسارات
app.use(limiter);
// أو تطبيق على مسارات محددة
app.use('/api/', limiter);
app.listen(3000);
أفضل ممارسات الأمان:
- لا تلتزم أبدًا بمفاتيح API أو الأسرار للتحكم في الإصدار
- استخدم متغيرات البيئة للتكوين الحساس
- حافظ على تحديث التبعيات (استخدم npm audit)
- نفذ المصادقة والترخيص المناسبين
- سجل أحداث الأمان للمراقبة والتدقيق
- استخدم HTTPS في الإنتاج (فرض مع HSTS)
- نفذ مهلات الطلب لمنع استنفاد الموارد
- عمليات تدقيق أمني منتظمة واختبار الاختراق
تمرين عملي:
- تنفيذ تحديد المعدل لنقاط نهاية API مختلفة
- إنشاء نظام مصادقة مفتاح API مع تخزين قاعدة البيانات
- إعداد التحقق الشامل من المدخلات لنقطة نهاية تسجيل المستخدم
- تكوين CORS لتطبيق متعدد النطاقات
- بناء مكدس برمجية وسيطة أمان مع Helmet وتحديد المعدل والتعقيم