【发布时间】:2021-10-15 14:11:57
【问题描述】:
我正在开发一个应用程序,我可以使用new Date() 在多个地方检索当前日期,我希望如果用户更改了手机中的日期,则不允许使用它的日期错了。
由于应用程序的性质,当获取日期的操作完成时,可能没有互联网连接,因此我们可以越来越少地确保如果用户有选项使用网络日期/时间和使用网络时区,并且他可以连接到电话网络,那么日期是正确的(当然,如果可以篡改日期,但它看起来足够安全)。
问题是也有可能没有使用电话的电话网络,我检查了以下内容:
-
您可以禁用使用网络日期/时间并设置您喜欢的日期。
-
您激活了飞行模式(或类似的无连接情况)
-
你重启手机。
-
您启用使用网络日期/时间。
现在,尽管设置了使用网络日期/时间和使用网络时区,但手机上的日期不正确。确实,如果我退出飞行模式,日期会再次正确设置。
也许可以通过检查用户是否已重新启动手机的服务,然后在手机启动时再次正确地确定日期的服务来检测类似以前的情况,因此应用程序会检查该服务是否表明它已正确使用,因此它允许用户使用它...但这一切似乎很难做到,我们可能会打扰诚实的用户,他们必须在没有电话连接的区域中重新启动手机,然后尝试使用该应用程序而不尝试欺骗其他日期。
那么,对于一个不太复杂的方法和诚实的用户没有窃听,可以在没有任何类的连接的情况下获取日期的任何想法?或者这是不可能的?
【问题讨论】:
-
什么是
correct日期?如果我在几秒或几毫秒内退出会发生什么?您可能不是在寻找正确的日期,而是在寻找一个范围 -
是的,只要不是我昨天应该做的手术,但我今天没有做,但设置为昨天的日期就可以了。
-
我想第一次开始不是使用
new Date(),而是获取格林威治标准时间的日期/时间。这样,您已经解决了更改时区作弊的人的问题。您还可以存储上次使用该应用程序的时间。有了它,您可以禁用过去的作弊。对于未来的作弊,我没有看到简单的解决方案。 -
您唯一能做的并避免这些问题,就是与服务器时间同步。然后,在这样做之后,有一个简单的方法可以确定。