gpt4 book ai didi

android - Android 应用程序的身份验证方案 : When the SIM card is locked or exhanged by another, 应用程序停止工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:51 24 4
gpt4 key购买 nike

我需要实现一种方便的方法来确定移动应用程序是否正在被有效客户使用。我的客户告诉我,如果他们的手机丢了,他们肯定会联系运营商并锁定 SIM 卡。

因此,将身份验证与 SIM 卡有效性绑定(bind)似乎很自然(只要存在正确的 SIM 卡且未锁定,该应用程序就可以运行)。然后,万一丢失,客户只需锁定 SIM 卡,他或她无论如何都会这样做(因为网上银行会向手机发送批准交易的短信)。

我尝试读取与 SIM 卡相关的数据,但它只适用于某些手机而不适用于其他手机(有时我只得到空字符串而不是 IMEI 号码)。

如何实现身份验证机制,即

  1. 对用户来说很容易(不需要用户生成/输入新密码),
  2. 向应用程序提供当前插入的 SIM 卡是否可用的信息
    1. 与第一次启动应用程序时的 SIM 卡相同,并且
    2. 没有锁定?

如果不可能,有哪些身份验证替代方案(除了电子邮件/密码和带有 SMS 确认的电话号码)?

更新 1 (11.08.2013 14:17 MSK):一个明显的解决方案是使用电话号码作为登录名,使用服务器生成的 6 位数字作为密码。

然后,身份验证将像这样工作:

  1. 在第一次运行时,用户输入他或她的手机号码。
  2. 服务器向他或她发送一条包含 6 位密码的消息 (SMS)。
  3. 用户输入该密码,应用开始运行。
  4. 应用会定期要求用户更新密码(新密码也会通过短信发送)。

您如何看待这个选项?

能不能改进一下?

最佳答案

如果您使用 SIM 卡属性锁定您的应用程序并要求提供这些属性以解锁应用程序,您是否考虑过在应用程序中存储这些属性的位置(硬编码、数据库、文件、首选项...)?还是您正在考虑联系服务器进行验证?无论哪种方式,您最终都可能会得到一个可能存在安全漏洞的复杂解决方案。 SIM 序列号是唯一的,但同时它是公开的,您不能依赖此属性来锁定您的应用程序。

TelephonyManager class是访问 SIM 属性的网关(此类还以多种方式公开用户隐私)。截至目前,还没有暴露 android crypro API 来在 SIM 卡中执行加密操作。但是,由于您的客户可以联系运营商,您可以考虑要求运营商签署您的应用程序。在这种情况下,您可能有办法将他们的 SIM 卡用作安全元件。关于 this 的讨论线。基于有限次数尝试的 PIN 码是另一种实现简单例份验证以访问您的应用程序的方法。您可以在应用层实现此功能,而无需涉及 SIM 卡。

希望这对您有所帮助。

关于android - Android 应用程序的身份验证方案 : When the SIM card is locked or exhanged by another, 应用程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com