تخطَّ إلى المحتوى

المدونة

تأمين APIs في مشاريع Node.js وMySQL: أفضل الممارسات وأمثلة التعليمات البرمجية

أفضل الممارسات لأمان API في Node.js وMySQL

  • قراءة في 3 دقيقة
  • Updated

تأمين APIs في مشاريع Node.js وMySQL

API طبقات الأمانالعميلالمتصفح/التطبيقTLSHTTPS1.3🔒معدلالمحددDDoSالحماية🛡️AuthJWTالتحقق منRBAC🔑الإدخالالتحقق من الصحةالتعقيمJoi/Zod✅SQLParamبياناتالمعدة🗃️MySQLقاعدة البياناتالدفاع في العمق: كل طبقة تمنع فئة من الهجماتلا توجد طبقة واحدة كافية - الأمان يتطلب عمل جميع الطبقات معًاالطبقة 1الطبقة 2الطبقة 3الطبقة 4الطبقة 5يشفركل حركة المرورالكتل الغاشمةهجمات القوةيتحقق من هويةيمنعXSS / حقنيمنع حقنSQL
API Security Diagram

APIs هي العمود الفقري لتطبيقات الويب والهواتف المحمولة الحديثة. عند إنشاء API باستخدام Node.js وMySQL، يجب أن يكون الأمان أولوية قصوى. يغطي هذا الدليل أفضل الممارسات الأساسية وأمثلة التعليمات البرمجية لمساعدتك في تأمين أجهزة API الخاصة بك.

API بنية الأمان

API Security Architecture

يوضح هذا الرسم البياني نهجًا متعدد الطبقات لأمن API، بما في ذلك البوابة وWAF والمصادقة وحماية قاعدة البيانات.

بوابة

API وWAF

API Gateway and WAF

استخدم بوابة API وجدار حماية تطبيقات الويب (WAF) لمركزية الأمان وتحديد المعدل وطلب التحقق من الصحة. يساعد هذا في منع حركة المرور الضارة قبل أن تصل إلى تطبيق Node.js الخاص بك.

مستخدم

لتدفق قاعدة البيانات

User to DB Flow

يوضح هذا الرسم التخطيطي التدفق الآمن من المستخدم إلى قاعدة البيانات، مع عمليات التحقق من المصادقة والترخيص في كل خطوة.

1. استخدم HTTPS في كل مكان

قم دائمًا بخدمة API عبر HTTPS لتشفير البيانات أثناء النقل. استخدمletsencryptأو شهادة SSL التجارية.

2. المصادقة والترخيص

  • JWT (رموز الويب JSON):استخدم JWT للمصادقة عديمة الحالة. إصدار الرموز عند تسجيل الدخول والتحقق منها في كل طلب.
  • التحكم في الوصول المستند إلى الأدوار (RBAC):يقيد الوصول إلى نقاط النهاية الحساسة بناءً على أدوار المستخدم.
// Example: JWT middleware
const jwt = require('jsonwebtoken');
function authenticateToken(req, res, next) {
  const token = req.headers['authorization']?.split(' ')[1];
  if (!token) return res.sendStatus(401);
  jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
}

3. منع حقن SQL

OWASP أعلى التهديدات & الدفاعاتSQL حقناستعلامات ضارةاستعلامات ذات معلماتالبيانات المعدة & ORMمصادقة مكسورةبيانات اعتماد ضعيفةJWT + MFA + bcryptدوران الرمز المميز & التجزئةXSSحقن البرنامج النصيتعقيم الإدخالرؤوس CSP & الهروبSSRFالوصول الداخليالقائمة المسموح بها لعنوان URLتجزئة الشبكةالتكوين الخاطئالإعدادات الافتراضيةالتشديد الأمنيHelmet.js & التدقيقكل تهديد له دفاع - قم بتنفيذ جميع الطبقات للحماية الكاملةبناءً على أهم 10 مخاطر أمنية لتطبيقات الويب من OWASP

استخدم دائمًا الاستعلامات ذات المعلمات أو مكتبات ORM (مثل Sequelize أو Knex) لمنع حقن SQL.

// Using mysql2 with placeholders
const [rows] = await db.execute('SELECT * FROM users WHERE id = ?', [userId]);

4. التحقق من صحة الإدخال والتعقيم

التحقق من صحة جميع البيانات الواردة وتعقيمها باستخدام مكتبات مثلexpress-validatorأوjoi.

5. تأمين البيانات الحساسة

  • لا تقم مطلقًا بتخزين كلمات المرور ذات النص العادي. قم دائمًا بالتجزئة باستخدامbcrypt.
  • قم بتخزين الأسرار (بيانات اعتماد قاعدة البيانات، أسرار JWT) في متغيرات البيئة، وليس في التعليمات البرمجية.

6. تحديد المعدل والاختناق

قم بحماية جهاز API الخاص بك من هجمات القوة الغاشمة وهجمات DDoS باستخدام البرامج الوسيطة التي تحدد المعدل مثلexpress-rate-limit.

7. التسجيل والمراقبة

قم بتسجيل كافة محاولات المصادقة والأخطاء. استخدم أدوات المراقبة للكشف عن الأنشطة المشبوهة.

8. حافظ على تحديث التبعيات

قم بتحديث Node.js وMySQL وجميع التبعيات بانتظام لتصحيح نقاط الضعف المعروفة.

مزيد من القراءة

Related reading. For an explainable edge Web Application Firewall on TenthMatrix WSL Proxy, see the WAF blog, the technical article, or wslproxy.org.