【问题标题】:Security of an Android applicationAndroid 应用程序的安全性
【发布时间】:2016-09-29 11:22:38
【问题描述】:

我正在开发一个 Android 应用程序,并计划在 Google Play 商店上以“公开测试版”的形式发布此构建版本。

我想实现应用程序安全逻辑,它可以确保 beta 版本特定日期 dd/MM/YYYY 之后不会工作。

目前,我可以为这个逻辑想到两种方法:

  1. 从设备中检索当前日期(使用 Android 代码检索系统时间)

    问题:用户可以更改设备日期以破解安全系统

  2. 使用时间服务器检查当前日期

    问题:我的应用程序不需要互联网连接,因此如果我在应用程序启动时要求互联网连接,用户体验会很差

我有以下问题:

  1. 可以使用哪些替代方法(检查日期除外)来确保应用在日期 dd/MM/YYYY 之后无法运行?
  2. 如何检测到用户手动更改了设备日期?
  3. 即使设备离线也可以通过其他方法找到当前日期?

编辑: beta 版本免费提供所有高级功能,因此我不希望 beta 版本在日期 dd/MM/YYYY 之后工作。

新问题:

我已经实现了在应用程序启动时使用时间服务器检查实际日期的代码。在 dd/MM/YYYY 日期之后,用户可以进行哪些黑客攻击来访问应用程序?

提前谢谢你。

【问题讨论】:

  • 您可以想到的另一种选择是允许应用程序在测试版中运行的次数。无论如何,它的日期/时间用户是否总是可以清除应用程序缓存或回溯。检查日期是否在线将是防止滥用的最佳选择
  • 连接互联网时无需通知用户,在后台进行。如果服务器时间超过某个日期,则禁止访问该应用并向用户显示 Beta 应用已超过使用日期的消息。
  • 感谢 cmets。我们可以在后台进行日期检查,但由于应用程序可以离线工作,因此许多用户的设备都可以离线。
  • 如果某些用户将时钟倒转,问题有多严重?大多数用户不会这样做。通常,玩时钟的用户无论如何都不会付费。
  • 不要在同一个主题中提出新问题,你应该创建一个新问题

标签: android date security android-security android-date


【解决方案1】:

同意您不希望设备依赖互联网。然而,在某些时候,设备将在线(自从安装您的应用程序以来,人类永远不会让他/她的设备离线)。此时,您检查时间戳并从那里继续。您可以禁用该应用程序或执行任何操作。许多应用程序表现出这种行为以在且仅当网络连接时运行操作。 除了网络和设备时钟之外,您拥有的唯一其他最终解决方案是从安装应用程序的那一刻起运行一个后台计时器。祝你好运

【讨论】:

    【解决方案2】:

    新的权限模型默认包含“Internet”(您不再需要专门请求它)。

    【讨论】:

    • 感谢您的回复。我不担心互联网权限,但由于应用程序可以离线工作,因此许多用户的设备都可以离线。
    【解决方案3】:

    如果您不想使用互联网,您可以使用以下想法。首次运行应用程序时获取当前时间戳并将其保存在首选项或外部存储中。每次用户启动应用程序时,使用保存的时间戳检查当前时间戳。请检查负值以防止用户设置以前的日期。

    【讨论】:

      【解决方案4】:

      可以查看日期,在日期超过截止日期的时候,可以在preferences中保存一个变量,这样当你进入应用程序时,即使他们更改了日期,应用程序也会检测到那个日期超过了。

      【讨论】:

      • 如果在过期之前更改了日期以延长试用期怎么办?
      • Beloo 您可以保存安装日期,并计算应用程序工作的天数,当它达到所需数量时,限制访问。但实际上,我认为人们不会在日期到期之前更改日期。然而,没有什么是万无一失的,一切都可以跳跃。
      • 为什么不呢。假设你想欺骗并继续订阅..那么如果订阅逻辑仅基于本地时间,则可以永远继续这样的订阅
      • 那么建议偶尔(并非总是)检查互联网上的日期,以便用户不知道此选项是否可用。该选项可以由系统设置在后台,而且不仅是在应用程序打开的时候,这样会在联网时激活,你可以做检查。
      猜你喜欢
      • 1970-01-01
      • 2018-02-11
      • 2012-08-14
      • 2011-07-04
      • 1970-01-01
      • 2023-03-06
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多