Behnam Nasehi | بهنام ناصحی
Behnam Nasehi | بهنام ناصحی
خواندن ۳ دقیقه·۴ سال پیش

امن کردن دیتا های ذخیره شده در SharedPreferences

استفاده از Shared Preferences خیلی راحت و آسونه و برای برنامه نویس های تنبلی مثل من یک تهدید حساب میشه ! چرا ؟ اطلاعات شخصی کاربر ها برای خودشون خیلی مهمه و هرگونه نفوذ به این اطلاعات میتونه فاجعه به بار بیار , هکر ها با ترفند هایی میتونن به این Shared Preferences ما دسترسی پیدا کنن و برای اون فاجعه قدمی بردارن
پس تا وقتی Shared Preferences ما امن نباشه و رمزنگاری نشده باشه یجورایی میشه گفت که بی فایدست , بیاید با چند مثال بهتون توضیح بدم :

خب اول من میام همونجوری که همیشه از Shared Preferences استفاده میکردم کلاسش رو ساختم و دیتایی که در اپلیکیشن ذخیره شد به صورت زیر کاملا نمایان شد :

همونطور که دیدید کاملا من میتونم به اطلاعات ذخیره شده دسترسی پیدا کنم و ببینم چه value با چه key ذخیره شده

خب حالا راه حل چیه ؟

خب چطوری از دیتاهامون محافظت کنیم ؟

مشکل ما با استفاده از EncryptedSharedPreferences حل میشه , EncryptedSharedPreferences دقیقا تمامی کارایی که parent خودش SharedPreferences انجام میده رو به همون صورت انجام میده ولی به صورت رمزنگاری شده و هیچ نفر سومی نمیتونه به این اطلاعات دسترسی پیدا کنه و اگه هم پیدا کنه هیچی ازش نمیفهمه چون رمزنگاری شدست.

توجه : EncryptedSharedPreferences برای SDK 23 به بالاست ! و برای اندروید lollipop به پایین باید همون پیشفرض رو استفاده کنید

مرحله اول ( Add dependency ) :

به Build.Gradle App Level اضافه کنید

//app level build.gradle file implementation &quotandroidx.security:security-crypto:1.0.0-alpha02&quot

مرحله دوم ( ساخت کلاس ) :

خب ما این کلاس رو میسازیم و این کد هارو داخلش مینویسیم :

مرحله سوم ( طریقه استفاده ) :

طریقه استفاده ازش هیچ فرقی با همون پیشفرض خودش نمیکنه استفاده از این روش فقط برای رمزنگاری دیتا ها برای امن کردن دیتا هست

نتیجه :

اگه به عکس زیر توجه کنید متوجه میشید که دیتایی که ذخیره کردیم کاملا رمزنگاری شده , شما میتونید از خود Device file explorer اندروید استویو به این فایل دسترسی پیدا کنید :

فکر کنم با مقایسه عکس قبل با عکس بالا میتونید به تفاوت های چشمگیری دست پیدا میکنید
خب اینجا یک نکته هست :

به سایز های فایل ها توجه کنید ! تقریبا ده برابر شده و این باعث میشه پرفورمنس برنامه یکم بیاد پایین پس سعی کنید از EncryptedSharedPreferences برای دیتا های خاص و حساس استفاده کنید !




فایل رو داخل گیت گذاشتم میتونید استفاده کنید :

https://github.com/behnamnasehi/EncryptedSharedPreferences




مقاله های قبلی من :

https://vrgl.ir/kJSzk
https://vrgl.ir/Mzh2B



تلگرام من : BehnamNasehi

برنامه نویسیاندرویدامنیتاندروید استودیوامنیت اندروید
Android Application Developer https://behnamnasehi.ir
شاید از این پست‌ها خوشتان بیاید