android - 基于时间服务器的验证码的安全性

标签 android unit-testing security android-security

我正在开发一个 Android 应用程序,我正在使用时间服务器检查应用程序的有效性(应用程序是否在免费试用期后运行) .

我的应用程序代码检查当前日期是否小于特定日期 dd/MM/YYYY。我的代码从一些流行的时间服务器检索当前日期。

我有以下问题:

  1. 我的代码有哪些可能的逻辑安全威胁?即,可以采取哪些可能的黑客手段来获得无限制的免费试用?
  2. 如何提高我的应用程序的安全性以避免与验证过程相关的黑客攻击?
  3. 如何单元测试这部分代码?

谢谢。

最佳答案

  1. 攻击者可以修改 apk 并更改计时结束日期或删除整个检查。这相对容易,取决于您存储它的位置,他们可能需要反编译源代码,但这也相当容易。
  2. 从技术上讲,您可以混淆您的代码以增加反编译的难度,但一方面,它只有在您的试用结束日期被硬编码(编译到源代码中)时才有用,另一方面,攻击者仍然可以通过更多的工作来更改它(或删除整个检查)。如果它被混淆,它需要一个稍微更坚定和/或更足智多谋的攻击者。由于无法完全防止这一点(攻击者将始终能够使用您的应用程序,只要他们愿意,请参阅 SaaS 时代之前的所有盗版软件),您可能不想做更多的事情。您需要做的工作会很快增加,但您获得的好处(安全)却不会。
  3. 这可能是一个完全独立的问题,也许您应该单独发布。我(也许天真)的看法是您应该模拟向时间服务器发送请求的部分,但我不是这方面的专家。

关于android - 基于时间服务器的验证码的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929206/

相关文章:

java - @AfterMethod 和 ITestListener#onFailure 的 TestNG 调用顺序

iphone - 如何在 iPhone 上激活/停用 "slide to unlock"?

java - X509 扩展

unit-testing - 如何只配置一次 vertx 实例本身并在应用程序代码和测试中使用它?

java - 我可以使用 @MockBean 在我的测试类的一种方法中模拟 bean 吗?

android - 带 Horizo​​ntalScrollView 的 DrawerLayout 进入内容菜单

android - 为什么在按下后退按钮时会调用当前 fragment 的 oncreateview?

java - 客户端 java 本质上是否不如 javascript 安全?

android - 从数据库中获取可绘制名称然后在 R.drawable.name_database 中访问

Android mapView ItemizedOverlay setFocus 不能正常工作