تكرار السؤال: …
الإجابة المختصرة
باستخدام مكتبات متخصصة مثل expo-secure-store أو react-native-keychain لحفظ الرموز السرية داخل أجهزة التشفير العتادية الآمنة في الهاتف وليس في التخزين المحلي العادي.
الشرح
لا يجوز مطلقاً حفظ كلمات المرور أو رموز JWT في AsyncStorage أو التخزين غير المشفر لأنه يمكن استخراجها بسهولة في الهواتف المكسورة الحماية (Rooted/Jailbroken) أو عبر النسخ الاحتياطية غير المشفرة. تستخدم هذه المكتبات نظام iOS Keychain ونظام Android EncryptedSharedPreferences المحمي بواسطة معالج الأمان المادي في الجهاز (Secure Enclave / TEE).
مثال بالكود
import * as SecureStore from 'expo-secure-store';
async function saveAuthToken(token: string) {
await SecureStore.setItemAsync('auth_jwt', token, {
keychainAccessible: SecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY,
});
}
async function getAuthToken(): Promise<string | null> {
return await SecureStore.getItemAsync('auth_jwt');
}أخطاء شائعة
- تخزين رموز المصادقة والبيانات البنكية في AsyncStorage أو Redux Persist دون تشفير عتادي حقيقي.