حماية تطبيق الويب الخاص بك: كيفية إغلاقه من تدخل طرف ثالث

الصورة

من أحد المترجمين: ننشر مقالًا لك عن طريق Jim Medlock ، وهو مبرمج ومهندس برامج. يتحدث Medlock عن الطرق الأساسية لحماية التطبيق أو خدمة الويب. تجدر الإشارة إلى أن هذه المادة من المحتمل أن تكون مفيدة للمبرمجين المبتدئين. على الرغم من أن الايجابيات ترك تعليقاتهم ، الجميع سيكون ممتنا

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

خلال الأشهر القليلة الماضية ، تلقت العديد من المؤسسات الكبيرة الأخبار بعد تسريبات هائلة من المعلومات. من بينها ، Facebook و 50 مليون حساب مسروق ، FIFA مع 3.4 تيرابايت من البيانات و 70 مليون مستند ، Google مع 0.5 مليون حساب ، Marriott Hotels مع بيانات من 427 مليون عميل من الشبكة بالكامل.

توصي Skillbox بما يلي: دورة تدريبية لمدة عامين "أنا مطور ويب للمحترفين" .

نذكرك: لجميع قراء "Habr" - خصم بقيمة 10،000 روبل عند التسجيل في أي دورة تدريبية في Skillbox باستخدام الرمز الترويجي "Habr".


المصدر

ليس فقط عدد هجمات القراصنة يتزايد ، ولكن أيضًا حجم الأضرار التي يلحقها مجرمو الإنترنت. وفقًا للخبراء ، يبلغ متوسط ​​حجم الخسائر المباشرة وغير المباشرة الناجمة عن مجرمي الإنترنت 3.86 مليون دولار لكل اختراق ناجح واحد. بالطبع ، هذا هو متوسط ​​السوق. الأرقام الحقيقية تختلف ، وإلى حد كبير.

بعض المزيد من الإحصاءات. يمكن الحكم على الضرر الناجم عن مجرمي الإنترنت بالبيانات التالية:

  • 148 دولارًا - "سعر" حساب مسروق ؛
  • 40 مليون دولار - مقابل مليون حساب ؛
  • 350 مليون دولار - مقابل 50 مليون حساب.



المال ليس الحجة الوحيدة: فكر في المدة التي سيستغرقها الأمر لترتيب كل شيء.

أمن البنية التحتية مقابل أمان التطبيق




تهدف معظم التدابير الأمنية إلى حماية أساس البنية التحتية لتكنولوجيا المعلومات ، مثل الخادم والتخزين ومركز البيانات. إنه ضروري ، لكن ليس فقط من يجب حمايتهم.

تعتبر الإجراءات الأمنية المتعلقة بالتطبيق نفسه مهمة للغاية أيضًا. إنها توفر مجموعة كاملة من الطرق للعثور على الثغرات الموجودة في برنامجك وإصلاحها ومنعها. يجدر تسليط الضوء على هذه:

  • مراجعة الشفرة التي أجراها متخصصون في أمن المعلومات ، عندما يكون الهدف حصريًا هو البحث عن الأماكن التي تمثل مشكلة من حيث الأمن السيبراني ؛
  • التدقيق المستند إلى Blackbox استنادًا إلى العمل مع التطبيق ؛
  • مراجعة بنية التطبيق قبل كتابة الجزء الأكبر من الكود ؛
  • استخدام الأدوات الآلية التي تساعد في تقييم الحماية ؛
  • إطلاق برامج المكافآت التي تسمح للمتخصصين من الجهات الخارجية بالعثور على مناطق المشاكل.

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



لا يمكنك فعل شيء مع العميل


المشكلة هي أنه من غير المحتمل أن تكون قادرًا على حماية مشروعك من جانب المستخدم. المتصفحات الحديثة ضعيفة ، على الرغم من جهود المبدعين.

في حالة خدمات الويب ، يعد المكون الضعيف للنظام بأكمله هو المفتاح اللازم للترخيص. على سبيل المثال ، يجب أن تدعم التطبيقات التي تستخدم واجهة برمجة تطبيقات GitHub مصادقة الرمز المميز. إذا تمكن الجاني من الحصول على المفتاح بين يديه ، فسيتمكن من الوصول إلى رمز الضحية ومشاريعه على GitHub.

بالنسبة لمطور الواجهة الأمامية ، يتمثل الخطر في أنه يمكن أن يكون متأكداً من الأمان الكامل لخدمته إذا تم توفير تدابير مثل المفاتيح الخاصة والرموز. كل هذا جيد ، لكن كل المتصفحات نفسها هي رابط ضعيف.

هل من الآمن فصل بيانات الأمان مثل المفاتيح عن المشروع بأكمله؟


عادةً ما يتم استخدام متغيرات البيئة لاستخراج البيانات إلى ملف ، مثل .env. هناك خطوة إضافية تتمثل في إضافة اسم هذه الملفات إلى .gitignore ، مما يحول دون تنفيذ أوامر git push لتحميلها على المستودعات العامة ، حيث سيكون الملف مفتوحًا للجميع.



كل هذا جيد ، لكن ملفات .env غير مشفرة. في حالة إنشاء تطبيق React ، يمكن التحقق من ذلك باستخدام خيار أدوات المطور في المتصفح ، في دليل build / static / js. هنا ، على سبيل المثال ، هو ما نجده عند فحص 0.chunk.js.



كما ترون ، هذا النهج لا يعطي مزايا خاصة ، في بعض الحالات ، من الأفضل تخزين عناصر الأمان المهمة في التعليمات البرمجية المصدر. هناك سيناريو آخر جذاب حيث يتم استخدام فصل الكود لتأخير تحميل البرامج النصية التي تحتوي على متغيرات البيئة حتى يقوم المستخدم بمصادقة التطبيق. ولكن في حالة تعرض جهاز الكمبيوتر العميل للخطر ، لن ينجح أي شيء - بعد كل شيء ، سيكون نظام الملفات الخاص به في متناول المتسللين.

الحل




على عكس جزء العميل ، يمكن حماية تطبيقات الخادم بحيث لا تقع البيانات المهمة في أيدي المهاجمين. للقيام بذلك ، يمكنك استخدام Oauth للحصول على مستوى إضافي من المصادقة والتحكم في الوصول والتشفير والبروتوكولات مثل HTTPS و TLS.



يمكن حل معضلة تأمين أسرار التطبيق من خلال تطبيق واجهة برمجة التطبيقات من جانب الخادم. في الوقت نفسه ، يعمل كخادم وكيل لعزل تطبيق العميل عن مزودي الخدمة ، والذي يستخدمه. بدلاً من استخدام البيانات الخاصة من جانب العميل لمصادقتها في الخدمة ، تقوم واجهة برمجة التطبيقات بالتصديق من تطبيق الخادم ، وتنفيذ الطلبات ، ثم تقوم بإرجاع النتائج إلى العميل فقط. لا يتم الكشف عن المفاتيح الخاصة أو غيرها من البيانات لهذا الأخير تحت أي ظرف من الظروف.

نهج متكامل




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

لا يكفي الاعتماد على "جزر التكنولوجيا". من الضروري ربط جميع العناصر معًا ، وفهم كيفية عمل النظام بأكمله.

فقط في هذه الحالة سيكون التطبيق أو الخدمة آمنة.

Source: https://habr.com/ru/post/ar433538/


All Articles