تكرار السؤال: …
الإجابة المختصرة
بتفعيل Hermes لترجمة الكود مسبقاً إلى Bytecode (وهي ترجمة وليست تشفيراً)، واستخدام ProGuard/R8 لتشويش كود أندرويد الأصلي، وتفعيل شهادات التثبيت الآمن (SSL Pinning) لمنع اعتراض هجمات Man-In-The-Middle.
الشرح
في تطبيقات الهاتف، يمكن لأي شخص استخراج ملف الـ APK أو IPA وقراءة أكواد الـ JavaScript إذا كانت نصوصاً صريحة. استخدام Hermes يحول الكود إلى ملف Bytecode ثنائي أصعب في القراءة من JavaScript الصريح، لكنه ليس تشفيراً؛ فأدوات مثل hermes-dec و hbctool تستطيع تفكيكه، لذا لا يغني عن عدم وضع الأسرار داخل التطبيق. كما يحمي SSL Pinning حركة البيانات الشبكية من الاعتراض عبر أدوات مثل Charles أو Burp Suite عبر التحقق الصارم من شهادة الخادم.
مثال بالكود
// التحقق من سلامة بيئة الهاتف (Jailbreak / Root Detection):
import * as Device from 'expo-device';
async function verifyDeviceSecurity() {
const isRooted = await Device.isRootedExperimentalAsync();
if (isRooted) {
// إيقاف تشغيل المعاملات الحساسة
throw new Error("لا يمكن تشغيل التطبيق على أجهزة مكسورة الحماية");
}
}أخطاء شائعة
- تضمين مفاتيح API الخاصة بالخادم أو الـ Private Keys داخل كود التطبيق ظناً أنه كود محمي من القراءة.