رفتن به مطلب

امنیت 100% داده های اندروید با M_Secure_SharedPrefrence


ارسال‌های توصیه شده

:53:  :53: پوزش    پست ویرایش شد پسورد اختصاصی هم اضافه شد و مشکل لود نشدن اطلاعات بعد از بسته شدن و پاک نشدن کلید ها ی برنامه رفع شد :53:  :53: 

با سلام خدمت همه عزیزان انجمن کتابخونه ویژه ای که قولش رو داده بودم بالخره آماده شد :yahoo:  :yahoo:  :give_rose:

یکی از دغدغه های جدی بچه ها تو این اواخر دسترسی به داده هایی هست که از طریق sharedprefrence ذخیره میشن و واقعا هم یک معضل جدی علی رغم این همه کارایی و انعطاف هست

واسه همین تصمیم گرفتیم تا حد زیادی(تقریبا کامل :fekr: ) این مشکل را برطرف نماییم با این کتابخونه با خیال راحت هر نوع داده ای رو میتونین ذخیره کنین بدون اینکه کوچکترین گزندی بش برسه

تفاوت این روش با روش استاندارد رو تو دوتا عکس زیر میبینید 

ما اومدیم یه کلمه(answercenter) رو با هردو روش ذخیره کردیم البته با کلید mykey عکس اول با روش استاندارد اندروید و عکس دوم با این کتابخانه

از اونجایی که فایلها با پسوردی که ما دادیم generate میشه پس دیگه کدهای آماده یا الگوریتمهای تکراری نمیتونن رمزشونو پیدا کنن(یه رمز قوی بزارید) همه داده ها به صورت استرینگ ساخته میشه یعنی مشخص نیست چه نوع داده ای توی فایل ساختیه

خب سرتونو درد نیارم فقط نحوه استفاده میمونه که به شکل زیر هستش

Dim sh As M_Secure_SharedPrefrence
sh.initialize("yourpass")  ' دقت کنید حتما اینشیالایز بشه

sh.savesecurString("mykey","answercenter") '  ذخیره کردن داده

sh.getsecurString("mykey","yourdefaultvalue") '      گرفتن داده       



مقدار پیشفرضی که میخواین وارد کنید yourdefaultvalue به جای 

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

پسند هم فراموش نشه :heart:

 

Capture.PNG

al.PNG

M_Secure_Shared_Prefrence.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ 44
  • ایجاد شده
  • آخرین پاسخ

سلام آقای شاهپیری عزیز ، عالیست ، گل کاشتید! فقط می خوام بدونم الگوریتم این برنامه برای رمز نگاری چی هست ؟ md5 , sha 1 , sha 2 , blowfish ؟ و این که اگر به قول معروف salting یا نمک زدن به رشته ها رو هم انجام بده ، خیلی بهتر هست.

چون که تا این جای کار امنیت برنامه تا حد زیادی بالا میاد ، اما دیتابیس هایی هستن که رکود های متن های انکریپت شده پر تکرار رو دارند ، اما خوب با این کار به قول معروف امنیت ۱۰۰ درصد می شه.

البته اگر هم انجام دادید ، که عالی هست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

آقای شاهپیری خیلی ممنون بابت کتابخانه عالی.

یه پیشنهاد دارم: بشه برای هم داده ای که ذخیره می کنیم پسورد انتخاب کنید. (برای این کار باید از کتابخانه RandomAccessFile استفاده کنید.)

موفق و مؤید باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام  کتاب خانه  خوبی هستش  ولی تیتر   تاپیکتون رو اصلا قبول ندارم امنیت 100  نداریم :)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام آقای شاهپیری عزیز ، عالیست ، گل کاشتید! فقط می خوام بدونم الگوریتم این برنامه برای رمز نگاری چی هست ؟ md5 , sha 1 , sha 2 , blowfish ؟ و این که اگر به قول معروف salting یا نمک زدن به رشته ها رو هم انجام بده ، خیلی بهتر هست.

چون که تا این جای کار امنیت برنامه تا حد زیادی بالا میاد ، اما دیتابیس هایی هستن که رکود های متن های انکریپت شده پر تکرار رو دارند ، اما خوب با این کار به قول معروف امنیت ۱۰۰ درصد می شه.

البته اگر هم انجام دادید ، که عالی هست.

الگوریتم رمزنگاری sha256 هستش و از کلاس AesCbcWithIntegrity برای salting یا همون به قول خودتون نمک پاشی استفاده شده(اینقد نمک میپاشه که شور میشه :malih: ) از همین کلاس یه secretkey بر پایه سریال نامبر دیوایس برای امنیت بیشتر ساخته شده که دیگه تقریبا نیازی به این که پسورد بزاریم نیست البته پسورد روهم میخواستم بزارم ولی زیاد ضروری نیست چون secretkey کار پسورد رو انجام میده خلاصه امنیتش رو تاجایی که عقل ناقصم قد میداد سعی کردم بالا ببرم :53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام  کتاب خانه  خوبی هستش  ولی تیتر   تاپیکتون رو اصلا قبول ندارم امنیت 100  نداریم :)

آقا جواد زیاد حساس نشو عزیز  :cheshmak:  خواستیم یه خورده پیاز داغشو زیاد کرده باشیم و گرنه همه میدونن امنیت صد درصد یعنی چی

ولی رسالت همه ما برنامه نویسا اینه که تا جایی که از دستمون بر میاد برای امنیت داده ها و برنامه هامون زحمت بکشیم 

نشینیم بگیم خب چون امنیت صد درصد وجود نداره پس بیخیال بزاریم هر بلایی میخوان سر برنامه هامون بیارن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

آقای شاهپیری خیلی ممنون بابت کتابخانه عالی.

یه پیشنهاد دارم: بشه برای هم داده ای که ذخیره می کنیم پسورد انتخاب کنید. (برای این کار باید از کتابخانه RandomAccessFile استفاده کنید.)

موفق و مؤید باشید

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

فایلهای ساخته شده فقط رو همون دیوایس قابل استفاده است و درصورت جابه جا کردن بین دیوایسها همه مقدارها null برگردونده میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

جدیدا نمیدونم چرا هر چی میخوام و کتابخونش وجود نداره به وجود میاد یهو مثل این :DD: :DD: :DD:

ممنون از کتابخونه عالیتون :53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام اقای شاهپیری ممنون به خاظر کتابخونه

الان یعنی از دیتابیس استفاده نکنیم؟؟ امنیتش کمه؟؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام اقای شاهپیری ممنون به خاظر کتابخونه

الان یعنی از دیتابیس استفاده نکنیم؟؟ امنیتش کمه؟؟؟

عزیز کارشون متفاوته این دوتا

از دیتابیس برای اطلاعات با حجم زیاد و اهمیت کم استفاده میشه مثل (بانک پیامک) و درصورتی که امنیت مهم بشه باید از sqlchiper استفاده کنید

از sharedprefrence  (این کتابخونه) برای داده های با حساسیت بالا استفاده میشه مثلا یوزر پس برنامه یا ذخیره کردن حالت ارتقا برای پرداخت درون برنامه یا هرچیزی شبیه به این

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا محمدرضا شرمنده یه مشکلی داره کتابخونتون

برنامه وقتی بسته میشه دیگه مقدارها رو نشون نمیده!!!

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

m_secure.initialize
Msgbox(m_secure.getsecurString("date",""),"")
Msgbox(m_secure.getsecurString("1",""),"")
Msgbox(m_secure.getsecurString("2",""),"")

بلافاصله بعد از ذخیره سازی توی مسیج باکس برام نشون میده مقدارها رو درسته

				m_secure.savesecurString("2","aaa")
				m_secure.savesecurString("1","bbb")
				m_secure.savesecurString("date","1390")
				Msgbox(m_secure.getsecurString("date",""),"")
				Msgbox(m_secure.getsecurString("2",""),"")
				Msgbox(m_secure.getsecurString("1",""),"")

اما وقتی برنامه بسته میشه مقدار ها هم پاک میشه و به مقدار پیش فرضی که خودم دادم تغییر میکنه !!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا محمدرضا شرمنده یه مشکلی داره کتابخونتون

برنامه وقتی بسته میشه دیگه مقدارها رو نشون نمیده!!!

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

m_secure.initialize
Msgbox(m_secure.getsecurString("date",""),"")
Msgbox(m_secure.getsecurString("1",""),"")
Msgbox(m_secure.getsecurString("2",""),"")

بلافاصله بعد از ذخیره سازی توی مسیج باکس برام نشون میده مقدارها رو درسته

				m_secure.savesecurString("2","aaa")
				m_secure.savesecurString("1","bbb")
				m_secure.savesecurString("date","1390")
				Msgbox(m_secure.getsecurString("date",""),"")
				Msgbox(m_secure.getsecurString("2",""),"")
				Msgbox(m_secure.getsecurString("1",""),"")

اما وقتی برنامه بسته میشه مقدار ها هم پاک میشه و به مقدار پیش فرضی که خودم دادم تغییر میکنه !!!

ممنون از اطلاع رسانیتون هموطن(یه اشتباه کوچولو تو اینشیالایز بود :malih: ) پست ویرایش شد 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

یه سوال داشتم :mail1:

می خواستم از کتابخانه توی یک از برنامه هام (در واقع بازی) استفاده کنم.

من نیاز دارم 3 تا متغیر رو ذخیره کنم.
می خواستم ببینم اگر از این کتابخانه استفاده کنم سرعت برنامه کاهش پیدا نمی کنه؟! (برای encrypt کردن)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

نه عزیزم سرعتی  اونچنانی نمیگیره یه پسورد ترکیبی بزار با طول نه زیاد(در حد حداکثر 10)

انشالا که تاثیر محسوسی توی سرعت نمیزاره

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا محمد رضا ممنون ک باگ قبلی رو رفع کردید :53:

حالا دو تا مشکل جدید!!! :pardon:

این کد زیر برای پاک کردن مقدار متغیر هاس درسته؟ :fekr:

m_secure.clearAllsecurKey

اما متاسفانه پاک نمیکنه مقدارشون رو!

 

یه مشکل دیگم هس من با کد بالا نتونستم مقدار رو پاک کنم بخاطر همین اومدم یه مقدار 0 به متغیرهام دادم

m_secure.savesecurString("n1","0")
				m_secure.savesecurString("m1","0")
				m_secure.savesecurString("i1","0")
				m_secure.savesecurString("p1","0")
				m_secure.savesecurString("u1","0")
				m_secure.savesecurString("d1","0")
ExitApplication

متغیر ها این بار مقدار صفر میگیرن درست میشه ولی وقتی کد خط اخر که برای خروج از برنامه گذاشتم دیگه مقدار متغییر ها هم تغییر نمیکنه حتی!!! (ینی خروج از برنامه رو برش دارم درست میشه)

ولی نمیدونم چ ربطی اصلا به کد خروج از برنامه داره!!!  :gerye:

اگه میشه آقا محمدرضا یه بررسی کنید :heart::girl_blush:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

امنیت این کتابخانه 30% هست ! اگه گفتید چرا ؟

اکثر برنامه نویسای واقعی و حرفه ای (الکی مثلا من حرفه ایم) با الگوریتم base64 کار کردن ، در اکثر متن های کد شده با base64 در انتهای متن دوتا مساوی یعنی == میاد ، که در تصویر پیوست شده پست اول میبینید !

این یعنی با base 64 دیکد شده ! یک علامت دیگه هم / هست که در کمتر هش ها دیده میشه ولی در base 64 خیلی استفاده میشه !

با این دو تا علامت ، میشه مطمئن شد که این یک هش base 64 هست ! که این هش به صورت دستی (با هوش انسان "باهوش") هم دیکرایپت میشه (میتونید از وبسایت های دیکرایپتر استفاده کنید) و به راحتی میشه به اطلاعات دست یافت !

 

Mr.Bahonar19 !!!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

امنیت این کتابخانه 30% هست ! اگه گفتید چرا ؟

اکثر برنامه نویسای واقعی و حرفه ای (الکی مثلا من حرفه ایم) با الگوریتم base64 کار کردن ، در اکثر متن های کد شده با base64 در انتهای متن دوتا مساوی یعنی == میاد ، که در تصویر پیوست شده پست اول میبینید !

این یعنی با base 64 دیکد شده ! یک علامت دیگه هم / هست که در کمتر هش ها دیده میشه ولی در base 64 خیلی استفاده میشه !

با این دو تا علامت ، میشه مطمئن شد که این یک هش base 64 هست ! که این هش به صورت دستی (با هوش انسان "باهوش") هم دیکرایپت میشه (میتونید از وبسایت های دیکرایپتر استفاده کنید) و به راحتی میشه به اطلاعات دست یافت !

 

Mr.Bahonar19 !!!!

سلام

حرف شما درست، اما وقتی ما برای متن خودمون یک رمز می گذاریم آیا می شه اون رو دیکرایپت کرد؟ (البته آره!!! چون اگر به سورس برنامه دسترسی داشته باشید رمز رو هم پیدا می کنید...)

ولی در هر صورت یک کاربر عادی نمی تونه به مقادیر برنامه دسترسی داشته باشه! بیشتر این کتابخانه برای امنیت در ذخیره سازی مقدار امتیاز در بازی ها هست.

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آقا محمد رضا ممنون ک باگ قبلی رو رفع کردید :53:

حالا دو تا مشکل جدید!!! :pardon:

این کد زیر برای پاک کردن مقدار متغیر هاس درسته؟ :fekr:

m_secure.clearAllsecurKey

اما متاسفانه پاک نمیکنه مقدارشون رو!

 

یه مشکل دیگم هس من با کد بالا نتونستم مقدار رو پاک کنم بخاطر همین اومدم یه مقدار 0 به متغیرهام دادم

m_secure.savesecurString("n1","0")
				m_secure.savesecurString("m1","0")
				m_secure.savesecurString("i1","0")
				m_secure.savesecurString("p1","0")
				m_secure.savesecurString("u1","0")
				m_secure.savesecurString("d1","0")
ExitApplication

متغیر ها این بار مقدار صفر میگیرن درست میشه ولی وقتی کد خط اخر که برای خروج از برنامه گذاشتم دیگه مقدار متغییر ها هم تغییر نمیکنه حتی!!! (ینی خروج از برنامه رو برش دارم درست میشه)

ولی نمیدونم چ ربطی اصلا به کد خروج از برنامه داره!!!  :gerye:

اگه میشه آقا محمدرضا یه بررسی کنید :heart::girl_blush:

:malih: بله دوباره حواسم نبود بعداز اینکه clear میکنه باید apply بشه خیلی ممنون از اینکه کمک کردی تا اشکالاتش برطرف شه :give_rose:  :give_rose:  :give_rose:

پست احتمالا برای بار آخر دیگه ویرایش شد و فکر نکنم دیگه مشکلی باشه انشالا :53:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

امنیت این کتابخانه 30% هست ! اگه گفتید چرا ؟

اکثر برنامه نویسای واقعی و حرفه ای (الکی مثلا من حرفه ایم) با الگوریتم base64 کار کردن ، در اکثر متن های کد شده با base64 در انتهای متن دوتا مساوی یعنی == میاد ، که در تصویر پیوست شده پست اول میبینید !

این یعنی با base 64 دیکد شده ! یک علامت دیگه هم / هست که در کمتر هش ها دیده میشه ولی در base 64 خیلی استفاده میشه !

با این دو تا علامت ، میشه مطمئن شد که این یک هش base 64 هست ! که این هش به صورت دستی (با هوش انسان "باهوش") هم دیکرایپت میشه (میتونید از وبسایت های دیکرایپتر استفاده کنید) و به راحتی میشه به اطلاعات دست یافت !

 

Mr.Bahonar19 !!!!

دوست عزیز شما دوتا مساوی دیدین فکر میکنین به همین راحتیا میشه دیکد کرد؟؟ :fekr:  :girl_blush:

نخوندی توضیحاتو احتمالا عزیز اولا کدهای تولید شده بر اساس  پسوردی هست که ما میدیم ثانیا این پسورد به صورت RUNTIM هست یعنی تو دل کدهای تولی شده هست نه بکشون

در ضمن این کتابخونه ترکیبی از AES128 و CBC و PKCS5 و SHA 256 و base64  هستش تو گیت هاب میتونی نمونشو گیر بیاری

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

w31CeqG4z2F8fdAP7wNiNg==:SzsJmT9ZjUcpI+lj0+KV4QVsfM/rfL6hkkEm/g7I1eI=:ayMNGwgyT9waDZlszyMwcA==
لینک ارسال
به اشتراک گذاری در سایت های دیگر

:malih: بله دوباره حواسم نبود بعداز اینکه clear میکنه باید apply بشه خیلی ممنون از اینکه کمک کردی تا اشکالاتش برطرف شه :give_rose:  :give_rose:  :give_rose:

پست احتمالا برای بار آخر دیگه ویرایش شد و فکر نکنم دیگه مشکلی باشه انشالا :53:

خیلی خیلی ممنون بخاطر پشتیبانی خوبتون :53:

بازم باگ داشت میام آوار میشم توی همین تاپیک با اجازه :DD::oops:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...