اريد برمجة تطبيق للاندرويد وال ios لموقعي الالكتروني لكن قبل ان ابدا في برمجة ال Api الذي سيتعامل مع التطبيق لدي سؤال لطالما كان يحيرني، كيف سوف اسمح للتطبيق ان يتعامل مع السيرفر كيف اعطي تصريحات ان يقوم في عملية رفع صور وكيف سيتخاطب التطبيق مع السيرفر، اعي ان يمكن عمل Api لكن كيف اسمح لتطبيقي للوصول للسيرفر وكيف امنع باقي التطبيقات من الوصول في حال حاول احدهم العبث، سوف تقول لي ضح كود في داخل التطبيق حتى تتأكد مع من يتخاطب السيرفر، لكن نفس الحالة سوف يقوم الهكر بفك مرفات التطبيق واخراج الكود منه، ما هي الطريقة حتا ادع سيرفري يسمح فقط لتطبيقي في الوصول للبيانات ؟
الرجاء احتاج اجابة من خبير Ionic لتطبيقات الهواتف الذكية
إن كنت ستسخدم ionic فأنت أمام خيارات لا حصر لها بالنسبة للتعامل مع السيرفر
- أولاً عليك أن تقوم بـ cors setup بين تطبيقك و الـ API
هنا أخبر الـ API أنّ عليها القبول بكافة الـ requests القادمة من الـ client الموجود على البورت 4200 في حالتك سيختلف الأمر بحسب أين ستضع تطبيقك و يمكنك أيضاً السماح لـ CORS من أي مصدر (هذا سيسمح لأيّ كلاينت في العالم إرسال طلبات لتطبيقك)
الكود في الصورة هو لـ aspnetcore 2.1 ليس بالضرورة أن يكون ذاته بالنسبة للـ API الذي ستستعملها لكن الفكرة ستظل نفسها.
السيناريو الآخر بالنسبة للسيرفر أن تقوم بـ HMAC و هي تقنية تجعل التعامل بين السيرفر و الكلاينت مبني على api key معين، كيفية إنشاء هذه الـ middlewares تعتمد بشكل كبير على اللغة و إطار العمل في السيرفر أيضاً.
ثانياً عليك استخدام شيء مثل RXjs (مع angular http client module) أو fetch أو axios، في حالة ionic
بالنسبة لتطبيق موبايل فأنت في الغالب لست مضطراً لعمل hosting لـ client لذلك انصحك بالطريقة الثانية أكثر، و هي إنشاء api key و وضع هذا المفتاح في الـ header لكل طلب يرسله الكلاينت إلى الـ API.
;({"const headers = new HttpHeaders({"api-key":"api_key_value
;({ this.http.post(endpointURL ,payload, {headers:headers
و في الباك إند ستشترط الـ middleware أن يكون كل طلب يحمل في الـ header هذا المفتاح بالقيمة الصحيحة.
حبيبي لايمكن ان تمنع تطبيق اخر من ان يتصل مع سرفرك و يحاكي تطبيقك الاصلي
يجب عل مستخدم النهائي ان يسجل دخوله قبل ان يحصل عل اي بيانات، لاادري ما الصعب هنا
نعم بعد عملية التسجيل كيف اضمن ان لايقوم الهكر بنفس العملية على تطبيقاته من خلا تسجيل دخول على سيرفري وارسال مجموعة صور على سيرفري دون علم مني ويقوم في حشو السيرفر بالصور المكررة من خلال عملية لوب على السيرفر , كيف اضمن ان الركوست يأتي من التطبيق نفسه لا من الهكر localhost ؟
و بما أنّك تستخدم NodeJS فالـ middleware ستكون من الشكل
فقط عندم يتحقق الشرط ستمرر هذه الدالة الـ request للميدل وير التي تليها عن طريق استدعاء next و إن لم يتحقق فلن تمرر الـ request و يمكن أن تُعيد bad request إلى الكلاينت صاحب الـ api key الغير صحيح
و في الـ index.js (الملف الرئيسي للتطبيق) ستقوم بتسجيل الميدل وير قبل أن تستخدم الـ route
عليك أن تخزن الـ api_key_secret في ملف config باستخدام مكتبة config.js مثلاً كـ environment variable، من الخطير أن تضعه كما هو في تطبيقك
(أعتذر عن عدم كتابة الأكواد هنا، حسوب لديه طريقة غريبة في الـ formatting)
فلاً لا اعرف كيف اشكرك, لقد ساعدتني بفهم شيء مهم, انا اجدها طريقة جميلة وسوف اعمل عليها انشاء الله .
على الرحب، استخدم هذه الطريقة لكل شيء بما فيه الـ validation و الـ user auth و يمكنك استخدامها لدوال معينة بعينها عبر تمريرها كمتغير ثانٍ
هذا يساعد في كتابة clean code
التعليقات