مقدمة
أمان واجهة برمجة التطبيقات (API) يعني حماية سلامة واجهات برمجة التطبيقات التي نستخدمها أو ننشئها. تستخدم معظم الشركات حاليًا واجهات برمجة التطبيقات لربط الخدمات ونقل البيانات. في حال تعرض واجهة برمجة التطبيقات للاختراق أو الكشف أو الاختراق، سيؤدي ذلك إلى خرق البيانات. لذلك، بناءً على المعلومات المنقولة، يجب مراعاة مستوى أمان واجهة برمجة التطبيقات المطلوب لتطبيقها في التطبيق. في هذه المقالة، سأقدم بعض حزم npm المفيدة التي تساعدنا على تجنب مشاكل الأمان الشائعة.
1. استخدام الخوذة
خوذة.جي اس هي وحدة Node.js تُستخدم لحماية عناوين HTTP. تُستخدم هذه الوحدة في تطبيقات Express، وتمنع هجمات مثل Cross-Site Scripting (XSS) وClickjacking، وذلك من خلال ضبط عناوين HTTP متنوعة.
لماذا تعد حماية رؤوس HTTP مهمة؟
يتجاهل معظم المطورين عناوين HTTP. قد تكشف هذه العناوين معلومات حساسة حول الخادم، وإصدار البرنامج، وحتى بنية التطبيق. لذلك، يُعد استخدام أدوات مثل Helmet.js أمرًا بالغ الأهمية.
وحدات Helmet.js المهمة
- خيارات الإطار X: منع Clickjacking عن طريق منع عرض الصفحات في iFrames.
- سياسة أمان المحتوى: تعيين سياسة الأمان لمنع حقن البرامج النصية غير المصرح بها.
- التحكم في ذاكرة التخزين المؤقت: تعطيل التخزين المؤقت على جانب العميل للمعلومات الحساسة.
- توقع-CT: ضمان شفافية شهادة SSL.
- X-مدعوم بواسطة: قم بإزالة الرؤوس التي تعرض معلومات برنامج الخادم.
- حماية X-XSS: تمكين الحماية ضد هجمات XSS في المتصفحات.
- إجراءات أمنية صارمة للنقل: إجبار المتصفح على استخدام HTTPS.
للبدء في استخدام Helmet.js، ما عليك سوى تثبيت هذه الوحدة واستخدامها في تطبيق Express الخاص بك.
const helmet = require('helmet'); const express = require('express'); const app = express(); app.use(helmet());
2. الاستخدام الآمن لملفات تعريف الارتباط
للتأكد من أن ملفات تعريف الارتباط لا تسبب ثغرات أمنية في التطبيق، توقف عن استخدام الاسم الافتراضي لملفات تعريف الارتباط الخاصة بالجلسة وقم بتعيين خيارات أمان ملفات تعريف الارتباط بشكل مناسب.
مشاكل ملفات تعريف الارتباط الشائعة
إذا لم تُضبط ملفات تعريف الارتباط بشكل صحيح، فقد تُصبح هدفًا سهلًا لهجمات البرمجة النصية عبر المواقع أو الكشف عن المعلومات. استخدام إعدادات دقيقة لملفات تعريف الارتباط يُخفف من هذه المخاطر.
الإعدادات الموصى بها
- يؤمن: تأكد من إرسال ملفات تعريف الارتباط عبر HTTPS فقط.
- http فقط: تقييد وصول ملفات تعريف الارتباط إلى JavaScript على جانب العميل.
- اِختِصاص: حدد المجال الصالح لملفات تعريف الارتباط.
- طريق: قم بتحديد المسارات التي تكون ملفات تعريف الارتباط صالحة فيها.
- تنتهي صلاحيتها: تعيين تاريخ انتهاء الصلاحية لملفات تعريف الارتباط المستمرة.
const session = require('cookie-session');
const express = require('express');
const app = express();
const expiryDate = new Date(Date.now() + 60 * 60 * 1000); // 1 ساعت
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}));3. منع حقن NoSQL
حقن NoSQL هو هجوم شائع على التطبيقات التي تستخدم قواعد بيانات NoSQL. قد يسمح هذا الهجوم للمهاجم باستخراج معلومات حساسة.
حل
استخدام الحزمة إكسبريس-مونجو-سانيتيز يمكنك تطهير البيانات الواردة ومنع هذه الأنواع من الهجمات.
$ npm install express-mongo-sanitize
const mongoSanitize = require('express-mongo-sanitize');
app.use(mongoSanitize());4. منع هجمات ReDoS
قد تؤدي هجمات رفض الخدمة (ReDoS) أو هجمات رفض الخدمة (Denial of Service) في التعبيرات العادية إلى انخفاض أداء الخادم. من الأداة تعبيرات عادية آمنة استخدم التعبيرات العادية للتحقق من أنها آمنة.
مثال
var safe = require('safe-regex');
var regex = process.argv.slice(2).join(' ');
console.log(safe(regex));5. منع هجمات CSRF
لحماية تطبيقك من هجمات CSRF التي تسمح للمهاجمين بإرسال طلبات ضارة عبر المتصفحات المشروعة، استخدم الوحدة النمطية سيرف يستخدم.
const csrf = require('csurf');
app.use(csrf());









