بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ساخت برنامه اندروید برای پروژه notes و set نشدن session

مدیریت گفتگو
hosseinAmini 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام
دارم برای پروژه note یک برنامه اندروید میسازم. وقتی کاربر از طریق برنامه وارد پروفایلش میشه هیچ کدوم از SESSION هایی که در متد loginCheck نوشتیم set نمیشن. دلیلش چیه؟ و چه جوری میتونم درستش کنم؟

تشکر

نظرات

MOJTABA 10 سال پیش
فکر کنم نیازی به session برای ورود به پروفایل نباشه با SharedPreference میشه وضعیت login و logout رو نگه داشت .
hosseinAmini 10 سال پیش
آره میشه. ولی اینجوری هرچی بهش فکر میکنم به این نتیجه میرسم که امنیت میاد پایین. میخوام سمت سرور متوجه شم اگر آیدی کاربر با مقداری که در session ذخیره شده بود یکی نبود بهش اطلاعات ندم یا اینکه اگر session ثبت نشده بود بازم هیچ اطلاعاتی به کاربر ندم، دقیقا کارایی که تو پروژه note انجام دادیم الان تو برنامه من اگر یکی آیدیش رو از داخل کد تغییر بده میتونه اطلاعات کاربرای دیگه رو ببینه. برای جلوگیری از این اتفاق هیچ راهی به جز session به ذهنم نرسید
کاشی زاده 10 سال پیش
کاربر چطوری وارد پنل سایت میشه از طریق گوشی ؟
hosseinAmini 10 سال پیش
برای لاگین شدن از طریق گوشی توی UserController یه متد نوشتم که بهش از طریق post نام کاربری و رمز عبوری رو که کاربر توی گوشیش وارد کرده رو ارسال میکنم. همه چیزش شبیه متد لاگین شدن از طریق وب سایت هست فقط فرقش اینه که بعد از بررسی نام کاربری و رمز عبور به جای اینکه صفحه success یا fail نمایش داده شه از طریق json نتیجه رو ارسال می کنم حالا توی اندروید بررسی میکنم که اگر نتیجه موفقیت آمیز بوده اکتیویتی notes رو باز میکنم و اگر نبود پیغام خطا به کاربر نمایش میدم. حالا مشکل اینجاس که وقتی توی متد session رو set میکنم set نمیشه
کاشی زاده 10 سال پیش
خب شما سشنی ایجاد نکردی که براتون بسازه ، سشن زمانی ایجاد میشه که کاربر صفحه ای که Start زدین رو ببینه توی مرورگرش ، در کل برای لاگین شدن به برنامه از روش دیگه ای باید استفاده کنید که یک نمونش رو دوستمون گفتن .
hosseinAmini 10 سال پیش
ا یعنی فقط زمانی session ست میشه که کاربر با مرورگر سایت رو باز کنه؟ آخه روشی که MOJTABA گفت درست کار میکنه ولی فکر میکنم امنیت نداره. مثلا وقتی که کاربر وارد شد(به روش بالا که توضیح دادم) ما از طریق سرور آیدیش رو از طریق json بر میگردونیم و اون json رو توی shahredprefrence ذخیره میکنیم حالا توی اکتیویتی note آیدی ای رو که ذخیره کردیم رو به سرور ارسال میکنیم و تمام noteهای مربوط به اون آیدی رو بر مگردونیم سمت گوشی، تا اینجا درسته؟ حالا اگر یه نفر بتونه مقدار این sharedprefrence رو عوض کنه یا کاری کنه که به جای اینکه مقدار آیدی از sharedprefrence خونده نشه و خودش مقدار آیدی رو بزاره اینجوری میتونه noteهای کاربرای دیگه رو ببینه.
MOJTABA 10 سال پیش
سکانس ا: قبل از این که فرد لاگین کنه یک کد هش شده Default توی ShardPreference داشته باشیم. سکانس 2 : یک کد هش شده برای هر کاربر در نظر بگیریم و وقتی فرد داخل اپ لاگین کرد اون کد هش شده رو توی ShardPreference ذخیره کنیم و با اون کار کنیم حالا اگه نخواستیم توی ShardPreference بریزیم می تونیم توی دیتابیس SQLite بریزیم. دیتابیس و ShardPreference اپ کافه بازار رو که چکیدم دیدم که یک REQUEST_CODE داشت که طولش 30 حرف بود. بعدش فیلد های یک جدول از یک دیتابیس هم رمز نگاری شده بود
hosseinAmini 10 سال پیش
MOJTABA مرسی با روشی که گفتی پروژه Note رو ساختم. بی زحمت درباره نحوه رمزنگاری فیلدهای جدول توی دیتابیس توضیح بده.
bozorgmehr77 10 سال پیش
وقتی از توی browser یا webview یک سایت رو باز میکنی یه سری اطلاعات اضافه به سمت سرور ارسال میشه و در جواب یه کوکی بر میگرده که شامل sessionId است. دفعه بعد browser این sessionId رو همراه بقیه اطلاعات به سرور ارسال می کنه و سرور میفهمه که این کیه. شما باید در برنامه اندرویدت این اطلاعات رو هم به سرور بفرستس و کوکی های سرور رو هم ذخیره کنی.. به همین سادگی!

پاسخ‌ها 1

MOJTABA 10 سال پیش

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

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

فکر کردم که با روشی که استاد اپ رو Obfuscate میکردن , کافه بازار هم این چنین حرکتی زده باشه ولی چیزی که به ذهنم میرسه اینه که از این فیلد ها فقط کافه بازار سر در میاره (البته چند فیلدش معلومه که چیه) و به صورت دستی درست شده اند.

توی Stackoverflow که سرچ کردم از نظر بیشتر کاربرا Encrypt کردن فیلد ها کار جالبی نیست ...

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .