مسعود خوش کام
مسعود خوش کام
خواندن ۳ دقیقه·۵ سال پیش

خواندن پیامک اعتبارسنجی (OTP) بدون مجوز دسترسی در اندروید اُریو

همان طوری که همه ما میدانیم، امنیت بزرگترین چالش در تهیه و تولید هر محصولی است. بحث امنیت در مورد دستگاه های اندرویدی نیز اعمال می شود زیرا اطلاعات و فایل های حساس کاربر روی آن ذخیره می شود. برای بهبود امنیت، در اندروید 6.0 یا Android M، از یک قابلیت عالی به نام «مجوزهای زمان اجرا» استفاده شد.

با استفاده از مجوزهای زمان اجرا، کاربران می توانند مجوزهای موردنیاز در برنامه های نصب شده در دستگاه Android خود را کنترل کنند.. به این معنی که کاربر در حین اجرای برنامه، مجوزهایی را به برنامه ها اعطا می کند، نه هنگام نصب برنامه.

اگر برنامه ما نیاز به خواندن پیامک داشته باشد، کاربر مجبور است به برنامه مجوز android.permission.READ_SMS دهد که به دلیل حساسیت، از دادن این مجوز به برنامه ها خودداری می کند.

پیامک اعتبارسنجی چیست؟

برای تأیید واقعی بودن یا نبودن کاربر، سرور پیام متنی حاوی SECRET_CODE را به کاربر ارسال می کند. سپس کاربر کد ورودی را گرفته و به سرور ارسال می کند. اگر تأیید سرور موفقیت آمیز باشد، پاسخ موفقیت آمیز را به مشتری ارسال می کند و تأیید هویت کاربر با موفقیت به پایان رسیده است.

در اکثر اوقات زمانی که کاربر وارد برنامه ما می شود، ما از طریق شماره موبایل اقدام به تأیید آنها می کنیم تا کاربر اصلی را از کاربر تقلبی و ربات ها تشخیص دهیم. نمونه های معروف برنامه هایی که از این روش برای اعتبارسنجی استفاده می کنند شامل تلگرام، واتس اَپ، فیس بوک، وایبر و موارد دیگر است.

روش های مختلف برای ارسال پیامک اعتبارسنجی

به طور معمول دو راه حل برای دریافت کد اعتبارسنجی و وارد کردن کد در برنامه اندروید وجود دارد:

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

گزینه دیگر ارائه راه حل بهتر و سریع تر به کاربر است. در این روش، توسعه دهنده برنامه باید آخرین پیامک دریافتی از سرشماره مدنظر را از دستگاه کاربر بخواند و کد دریافتی را در محل تعیین شده وارد کند.

ایرادات خواندن پیامک

خواندن پیامک اعتبارسنجی از دستگاه کاربر چندین عیب دارد:

- درخواست مجوز اضافی READ_SMS (از اندروید 6 به بعد).

- برنامه توسعه دهنده باید پیامک اعتبارسنجی را از میان پیامک های کاربر را جستجو کند.

- با کنترل کامل برای خواندن پیامک ها، برنامه ها می توانند پیام های حساس کاربر را ردیابی کنند.

- کاربر ممکن است اعتماد نکند.

قابلیت بسیار جالب در اندروید اُریو

بیشتر شما از تغییرات مختلف سیستمی و API در Android O مطلع هستید و Google به طور مداوم در تلاش است تا امنیت و عملکرد سیستم اندرویدی را بهبود بخشد. در Android O خواندن پیامک اعتبارسنجی به روشی متفاوت و امن ارائه می شود.

گوگل در کلاس SmsManager یک API جدید با نام ()createAppSpecificSmsToken معرفی کرده است. این API مشکلات و نارضایتی های مطرح شده در بخش ابتدایی این مقاله را برطرف می کند.

در ادامه مراحل استفاده از این API بیان شده است :

۱. ایجاد یک توکن در سرور و ارسال آن به کلاینت (Android).

۲. بعد از دریافت توکن توسط دستگاه کاربر، ()createAppSpecificSmsToken صدا زده می شود.

۳. پس از دریافت پیامک اعتبارسنجی، اندروید نتیجه دریافت را بدون دریافت هیچ مجوزی در یک کالبک به برنامه اعلام می کند.

این به این معناست که هیچ کدی توسط توسعه دهنده برای دریافت پیامک اعتبارسنجی نوشته نمی شود. با استفاده از این API جدید می توانیم مستقیماً پیامک را دریافت و در برنامه استفاده نماییم.

برای اطلاعات بیشتر در مورد SMSManager، به صفحه مستندات آن مراجعه نمایید.

نتیجه

بیشترین مزیت استفاده از این API این است که نیازی به مجوز READ_SMS ندارید. همچنین فقط محتویات پیامک اعتبارسنجی موردنظر برنامه، مستقیماً دریافت می شوند.

نکته مثبت دیگر این روش این است که پیامک برای مدت طولانی در تاریخچه پیامک ها باقی نمی ماند. این امر به ویژه امنیت اطلاعات کاربر را بهبود می بخشد، زیرا هیچ برنامه دیگری قادر به خواندن این اطلاعات نخواهد بود.

نمونه کد پیاده سازی این قابلیت در ریپازیتوری گیت هاب من قرار گرفته و می توانید دانلود کنید.

از شما برای خواندن این مقاله بسیار سپاسگذارم. لطفاً این مقاله را لایک کنید و در صورت مفید بودن به دوستانتان توصیه کنید. با من تا انتشار مقاله بعدی همراه باشید...

برای اعلام هرگونه سوال، انتقاد و یا پیشنهادی، از طریق ایمیل با من در ارتباط باشید.

otp
برنامه نویس اندروید
شاید از این پست‌ها خوشتان بیاید