لقد أجريت تدقيقاً أمنياً لمشاريعي الجانبية — إليكم ما وجدته

لقد أجريت مؤخراً تدقيقاً لجميع مشاريعي الجانبية. فحصت الواجهات الخلفية (backends) المبنية بـ FastAPI، وبوتات Telegram، وتطبيقات الويب. كنت أظن أنني حذر.

لكنني كنت مخطئاً.

لقد وجدت ثغرات حقيقية قمت بالفعل بإطلاقها في بيئة الإنتاج (production). هذه ليست مشكلات نظرية، بل هي أخطاء ارتكبتها أثناء محاولتي العمل بسرعة.

إليكم المشكلات الرئيسية التي وجدتها وكيفية إصلاحها:

  1. المصادقة المشروطة (Conditional Authentication) كتبت كوداً لا يتحقق من مفاتيح API إلا إذا كان هناك "سر" (secret) موجود. إذا نسيت ضبط هذا السر في بيئة العمل (environment)، يتم تخطي عملية التحقق تماماً، مما جعل واجهة برمجة التطبيقات (API) الخاصة بي مفتوحة للجميع.
  1. تسريب المفاتيح في سجل Git وجدت مفاتيح API قديمة في سجل Git الخاص بي. كنت قد نقلتها إلى ملفات .env لاحقاً، لكن Git يحتفظ بكل نسخة قديمة من الكود الخاص بك للأبد.
  1. نقاط نهاية التصحيح (Debug Endpoints) المتبقية تركت نقاط نهاية (endpoints) في بيئة الإنتاج تعرض إعدادات قاعدة البيانات وإعدادات النظام الخاصة بي. هذه النقاط مفيدة أثناء التطوير ولكنها خطيرة في البيئة الفعلية.
  1. رسائل خطأ مفصلة للغاية (Verbose) كنت أرسل أخطاء النظام الخام إلى المستخدم. تكشف هذه الأخطاء عن مسارات الملفات، وأنواع قواعد البيانات، وإصدارات المكتبات المستخدمة. يمكن للمهاجم استخدام هذه البيانات لاستهداف نظامك.
  1. ثغرات XSS عبر innerHTML استخدمت innerHTML لعرض بيانات المستخدم في الواجهة الأمامية (frontend). هذا يسمح للمهاجمين بحقن برمجيات (scripts) في موقعك.
  1. غياب تحديد معدل الطلبات (Rate Limiting) كانت لدي نقاط نهاية تستدعي نماذج ذكاء اصطناعي مكلفة دون قيود. يمكن لمستخدم واحد أن يتسبب في فاتورة ضخمة خلال دقائق.
  1. إعدادات CORS متساهلة استخدمت allow_origins=["*"] في البرمجيات الوسيطة (middleware). هذا يسمح لأي موقع إلكتروني بإرسال طلبات إلى واجهة برمجة التطبيقات (API) الخاصة بك.
  1. تسريب الملفات لقد كتبتُ كوداً يقوم بإنشاء ملفات مؤقتة، لكنه فشل في حذفها إذا تعطلت العملية. هذه الملفات تبقى على خادمك للأبد.

نادراً ما تكون المشكلات الأمنية مقصودة، بل هي نتيجة لقول "سأقوم بإصلاح هذا لاحقاً". ولكن "لاحقاً" لا يأتي أبداً.

اجعل الأمن جزءاً من سير عملك منذ اليوم الأول. افحص الكود الخاص بك قبل الـ commit وقبل الـ deploy.

المصدر: https://dev.to/justjinoit/i-audited-my-own-side-projects-for-security-issues-heres-what-i-found-1ahb