من در حال کارآموزی در یک شرکت توسعه نرم افزار / نرم افزاری هستم، که در آن من باید یک ایده را در مورد چگونگی رسیدگی به این واقعیت که کاربر بیشتر از یک برنامه آفلاین استفاده می کند، ارائه می دهد.
اساسا برنامه یک ورودی پرواز است، اولین صفحه نمایش یک لیست از هواپیما است. پس از کلیک بر روی یک هواپیما، می توانید لیستی از تمام پروازهای متعلق به این هواپیما را ببینید. پس از آن کاربر می تواند هر اطلاعاتی را در پرواز ببیند، اگر قطعه ای برای تغییر وجود دارد، غیر طبیعی و غیره …
من کاملا در زمینه امنیت برنامه های تلفن همراه (و من فقط کمی از دانش امنیت به طور کلی)، بنابراین من چند سؤال / مقالات را در مورد این موضوع خواندم، اما هنوز چیزهایی وجود دارد که نمی فهمم و یا مطمئن نیستم.
ما از CouchDB استفاده می کنیم / PouchDB برای پایگاه داده، و من می دانم که Bcrypt در سمت سرور استفاده می شود (و سوال بدون جواب این است: آیا ما باید از آن در سمت سرویس گیرنده استفاده کنیم؟)
تا کنون من این ایده را مطرح کردم:
-
کاربر صبح به دفترش می آید، به برنامه متصل می شود
آنلاین و رمز عبور خود را پس از آن هش کرده و در سرور ذخیره می شود.
-
کاربر بخشی خود را از DB در تلفن / قرص همراه
با رمز عبور هشدار (+ نمک). DB با رمزنگاری رمزگذاری شده است
- کاربر هم اکنون می تواند خروج از سیستم و رفتن به حوزه، جایی که او هیچ
اتصال به اینترنت
- کاربر می تواند به صورت آفلاین وارد، دسترسی و تغییر DB خود را به عنوان او به آن نیاز دارد
برای کار خود.
-
کاربر به دفترش می رود (یا هر جایی که اینترنت دارد
اتصال) و هماهنگ DB قرص خود را به سرور اول
- : من می گویم "بخشی از DB" به دلیل یک کاربر خاص تنها قادر به کار بر روی مقدار مشخصی از هواپیما / پرواز.
بنابراین اینجا سوالاتم هست:
- باید از دو کلمه عبور استفاده کنم؟ i.e یکی برای ورود به سیستم آنلاین در سرور، و یکی برای ورود آفلاین؟ اگر چنین است، استراتژی اتخاذ چیست؟
- کجا باید رمز عبور هشدار را در رایانه لوحی ذخیره کنم؟ من بین DB محلی یا SessionStorage تردید دارم، اما اگر من آن را به خوبی درک کنم، اگر آن را در SessionStorage ذخیره کرده و کاربر در هنگام آفلاین خارج شود، آن را حذف می شود و در نتیجه کاربر نمی تواند دوباره وارد شود ؟
- آیا باید از طرف Bcrypt از طرف مشتری نیز استفاده کنم؟
- آیا استفاده از فلفل واقعا مرتبط است؟ من نمیتوانم بفهمم که آیا
امنیت بیشتر می تواند به ارزش اجرای آن باشد.
- در جهان، این رویکرد مناسب برای این نوع وضعیت است؟ اگر
نه، چرا و چه باید تغییر کنم؟
- چند مورد در مورد نشانه را خوانده ام، اما همانطور که متوجه شدم، بعد از یک زمان مشخص، منقضی می شود، و در حال حاضر هیچ وقت در مورد چقدر زمان گفته نشده است قرص قبل از بازگشت به اینترنت آنلاین نیست، بنابراین فکر نمی کنم بهترین گزینه باشد، درست است؟
من پیش از این این سوال را در زمینه مهندسی نرمافزار مطرح کردم، اما به من گفته شده که در اینجا بهتر است.
همچنین باید داده ها را در چنین مواردی محافظت کنم که کاربر آفلاین است، خارج شده است، و کسی دارد قادر به دسترسی فیزیکی به دستگاه است.
دریغ نکنید که به من بگوئید که آیا شما نیاز به اطلاعات بیشتری دارید، ممکن است چیزی را فراموش کرده ام.
هر گونه کمک بسیار سپاسگزار خواهد بود!