Parse أمان الخادم

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

Parse آلية الأمان

من أجل تكوين وصول الأمان المناسب إلى تطبيقك بشكل صحيح، يجب عليك أولاً فهم بعض مفاهيم آليات الأمان الأساسية في Parse مفاهيم فئات Parse الافتراضية وآليات المصادقة.

1-Parse توضيح الفئات الافتراضية

ينشئ Parse افتراضيًا 3 فئات: المستخدمون والأدوار والجلسات. تتكامل هذه الفئات بشكل كامل مع الواجهة الخلفية بأكملها وستجعل حياتك أسهل عند تكوين آليات المصادقة لحماية تطبيقك.

المستخدم

يوفر Parse فئة مستخدم متخصصة تُدعى Parse.User تتعامل تلقائيًا مع الكثير من الوظائف المطلوبة لإدارة حساب المستخدم.

يتم تأمين فئة Parse.User بشكل افتراضي. لا يمكن تعديل البيانات المخزنة في Parse.User إلا بواسطة هذا المستخدم فقط. بشكل افتراضي، لا يزال من الممكن قراءة البيانات من قبل أي عميل. وبالتالي، تكون بعض كائنات Parse.User مصادق عليها ويمكن تعديلها، في حين أن البعض الآخر للقراءة فقط.

الأدوار

الدور هو فئة يمكنك من خلالها ربط المستخدمين والأدوار الأخرى في دور جديد. بمجرد إنشاء دور يمكنك استخدامه لتحديد ما إذا كان هذا الدور سيصل إليه هذا الدور في تطبيقك باستخدام CLPs و ACLs.

الجلسة

عندما تقوم بتسجيل دخول مستخدم عبر طريقة تسجيل دخول مستخدم، سيقوم Parse تلقائيًا بإنشاء كائن جلسة عمل جديدة غير مقيدة في خادم Parse الخاص بك. نفس الشيء بالنسبة لتسجيلات الدخول وتسجيلات الدخول على Facebook/Twitter.

2-Parse آلية المصادقة

عند الحديث عن الوصول إلى البيانات على Parse، يمكنك التحكم في أمان تطبيقك على مستويين مختلفين:

  1. الفئة/الجدول – استخدم CLPs (أذونات مستوى الفئة) لتقييد إنشاء الأعمدة الجديدة والوصول العام للبيانات إلى الفئة بأكملها;
  2. كائن- استخدم ACL (قوائم التحكم في الوصول) للتحكم في الوصول إلى كائن معين;

أذونات مستوى الفئة – CLPs

أذونات مستوى الفئة هي آلية تتحكم في الوصول إلى فئة وجميع كائناتها. باستخدام CLPs يمكنك تكوين الوصول للقراءة/الكتابة إلى دور، أو مستخدم، أو إلى مؤشر.

باستخدام هذه الآلية يمكنك تقييد الوصول إلى العمليات التالية:

  • قراءة
    • الحصول – جلب معلومات الكائنات لمعرف كائن معين;
    • البحث – الاستعلام عن جميع الكائنات في هذه الفئة (معرف الكائن غير ضروري);
    • العد – إجمالي عدد كائنات الفئة;
  • الكتابة
    • إنشاء – إنشاء كائنات جديدة;
    • تحديث – تحديث كائن موجود;
    • حذف – حذف كائن موجود;
  • إضافة
    • إضافة حقل – إنشاء أعمدة جديدة في هذه الفئة;

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

بعد النقر على أيقونة الدرع، ستظهر لك قائمة بسيطة تحتوي فقط على خيارات القراءة/الكتابة المتاحة. انقر على أيقونة أعلى يمين النافذة للوصول إلى تهيئة CLPs المتقدمة.

ثم سترى نافذة تهيئة CLP الكاملة.

قوائم التحكم في الوصول – ACLs

تسمح لك قوائم التحكم في الوصول بالتحكم في الوصول إلى كل كائن من فئة معينة بشكل مختلف. يمكنك إنشاء ACL لكائن وتكوين الوصول (قراءة/كتابة) لكل دور أو مستخدم.

يتطلب Parse دائمًا وجود ACL لإنشاء أي دور. لذا، لإنشاء الدور الأول ستحتاج إلى مستخدم. لنقم بإنشاء مستخدم جذر من أجل إنشاء الأدوار الأولى في تطبيقنا. سيكون هذا المستخدم هو المستخدم الوحيد الذي يمكنه تحرير هذه الأدوار.

أولاً، يمكننا إنشاء المستخدم الجذر فقط ملء اسم المستخدم وكلمة مرور على جدول المستخدمين.

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

بعد هذه الخطوة، دعنا نعطي هذا الدور اسم المسؤول ونربط المستخدمين أليكس وأليسون. نظرًا لأن فئة الدور لها علاقة مع فئة المستخدم، يمكنك النقر فوق علاقة النظرة العامة ثم إضافة معرّفات الكائنات من المستخدم الذي تريد إضافته إلى هذه العلاقة.

انقر على عرض العلاقة
ملء قائمة معرفات كائنات المستخدم مفصولة بفواصل
تحقق من النتيجة النهائية

لديك الآن مسؤول الأدوار مع مستخدمين اثنين يمكنك استخدامهما لتكوين أدوار جديدة، لإسنادها إلى ACLs أو CLPs جديدة.

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

الآن أنت على دراية بمفاهيم Parse Security الرئيسية، أود أن أقترح بعض النصائح لجعل تطبيقك أكثر أمانًا.

1-الحفاظ على المفتاح الرئيسي آمنًا

المفتاح الرئيسي هو آلية Parse لتجاوز جميع طبقات الأمان الأخرى. ومن المقارنات الجيدة أن امتلاك المفتاح الرئيسي للتطبيق يشبه امتلاك الوصول إلى جذر الخادم.

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

نصيحة أخرى هي أنه عند استخدام هذا المفتاح في شيفرة سحابية تأكد من أنك لن تلتزم بالمفتاح (الذي هو جزء من شيفرتك السحابية) في أي مستودع شيفرة عام.

2-التحقق من إنشاء فئة العميل

عندما تقوم بإنشاء تطبيق جديد على Back4App، يتم تمكين مفتاح Parse Key allowClasscleClassCreation. وهذا يعني أن أي شخص لديه معرف التطبيق ومفتاح العميل يمكنه إنشاء فئات جديدة على قاعدة البيانات الخاصة بك.

يمكنك تغيير هذا التكوين على Back4App في إعدادات الخادم-> الإعدادات الأساسية-> خيار قائمة الإعدادات.

ما عليك سوى التمرير لأسفل وإلغاء تحديد الخيار “السماح بإنشاء فئة العميل” كما هو موضح أدناه.

التوصية هنا هي أن تبقي هذا الخيار ممكّنًا أثناء تطوير تطبيقك وبمجرد الانتهاء منه قم بإزالته.

3-إنشاء هيكل الأدوار

كما بدأنا في قسم ACL، يمكنك المضي قدمًا وبناء هيكلية دور للتحكم بشكل أفضل في الوصول إلى جميع فئات وكائنات تطبيقك. لنفترض أنك تنشئ تطبيق Uber-Clone-App ولديك 3 وصولات رئيسية: المسؤول، والركاب، والسائقين.

4-تكوين CLP للمستخدمين والأدوار

نظرًا لأن المستخدم هو فئة Parse Class الافتراضية، يمكن لأي شخص لديه اسم الفئة ومفتاح REST API ومعرف التطبيق أن يطلب كل قائمة المستخدمين الخاصة بك عن طريق إجراء أمر تجعيد واحد:

curl -X GET -H "X-Parse-Application-Id: FyebIIII2zNpA2A2i9D9DDZDZ8froWna9WNA9vIvJMcgjfmjS0iK" -H "X-Parse-REST-API-Key: hluEgEgFZ084RdRd0My8E8Y9Y9v4RwsOsOsTIWLJeCc4qGw" https://parseapi.back4app.com/users

واسترداد قائمة المستخدمين:

يمكنك تجنب ذلك من خلال إنشاء CLP وتقييد صلاحية من يمكنه قراءة/كتابة جدول المستخدمين (من الممكن أيضًا توفير الحماية باستخدام ACLs). في هذه الحالة، سأسمح فقط للمستخدمين المسؤولين بقراءة قائمة المستخدمين الكاملة.

يمكنك إجراء عملية مماثلة لفئة الدور وإزالة الوصول من الأدوار/المستخدمين الذين لن يحتاجوا إلى قراءة الفئة الكاملة.

تكون فئة جلسة العمل محمية افتراضيًا لأن جميع كائنات جلسة العمل تحتوي على ACL يتم إنشاؤها تلقائيًا ويتم قراءتها وكتابتها بواسطة هذا المستخدم فقط.

5-جعل الفئات الثابتة للقراءة فقط

إذا كان لديك جداول/فئات تريد تغييرها فقط عبر لوحة تحكم Parse Dashboard يمكنك جعلها للقراءة فقط باستخدام CLP. في حالتي، أنشأتُ صنفًا يحدد المدينة التي سيعمل فيها تطبيق Uber-Clone-App الخاص بي.

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

6-المشورة العامة بشأن CLP و ACL

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

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

شاهد هذا الفيديو حول كيفية إنشاء ACL لمزيد من التفاصيل.

7-ضبط طول جلستك (بعض الحالات فقط)

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

لتحديد مدة الجلسة، انتقل إلى إعدادات الخادم-> إعدادات التطبيق المخصص.

في مربع نص خيارات Parse المخصص، حدد طول الجلسة بالثواني. في الحالة أدناه أقوم بتحديد جلسة عمل مدتها 10 دقائق. ثم انقر فوق حفظ.

8-استخدام Https و SSL

Https هو بروتوكول آمن لنقل المعلومات من متصفح العميل إلى الخادم الخاص بك. وهو ضروري لمنع المخترقين من الوصول إلى المعلومات الحساسة بهجمات مثل MITM.

النصيحة هنا هي استخدام Https عبر Http لإجراء اتصالات مع Parse Server. فيما يلي مثال باستخدام اتصال JS مع Parse يوضح كيفية استخدام https بشكل صحيح لإنشاء اتصال نشط. لاحظ أن الطريقة الخاطئة ستكون باستخدام http:// بدلاً من https://.

Parse.initialize("APP_ID","JS_KEY");
Parse.serverURL = 'https://parseapi.back4app.com/'

إذا كنت تستخدم Back4App Webhosting فمن المهم ملاحظة أن Back4App يوفر بالفعل اتصال https افتراضيًا (يجب عليك استخدام https:// في مكالماتك!).

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

الكلمات الأخيرة

يوفر لك Back4App و Parse عددًا من الطرق لتأمين البيانات في السحابة. أثناء إنشاء تطبيقك وتقييم أنواع البيانات التي ستقوم بتخزينها، يمكنك اتخاذ القرار بشأن التطبيق الذي ستختاره.

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


Leave a reply

Your email address will not be published.