Swift 关于iOS中Devicecheck的问题>;11基本上如何确保用户是真实的用户?

Swift 关于iOS中Devicecheck的问题>;11基本上如何确保用户是真实的用户?,swift,devicecheck,Swift,Devicecheck,我正在实现一个注册系统,它使用SMS来认证用户。当我为每一条发送的短信付费时,我想防止有人向我的服务器发送100000条请求,这将导致向随机用户发送100000条短信。 我想举个例子,只接受10条短信/小时/用户。 尽管如此,问题是我无法真正识别具有IP地址的用户(可能有几个用户使用相同的IP) 我听说Devicecheck是一个Apple API,它可以在服务器端告诉我客户端发送的临时令牌是否是真实的,是否来自真实的iPhone。问题是我无法存储此令牌发送的短信数量,因为它是临时的。我唯一能做

我正在实现一个注册系统,它使用SMS来认证用户。当我为每一条发送的短信付费时,我想防止有人向我的服务器发送100000条请求,这将导致向随机用户发送100000条短信。 我想举个例子,只接受10条短信/小时/用户。 尽管如此,问题是我无法真正识别具有IP地址的用户(可能有几个用户使用相同的IP)

我听说Devicecheck是一个Apple API,它可以在服务器端告诉我客户端发送的临时令牌是否是真实的,是否来自真实的iPhone。问题是我无法存储此令牌发送的短信数量,因为它是临时的。我唯一能做的就是在苹果服务器上存储2位,但是,有了2位,我无法存储用户在一小时内发送短信的次数

如果用户发送短信,我能做的最好的事情就是存储一个“true”,然后如果他们再次尝试发送短信,如果我在1分钟内看到一个true(因为我们也可以知道上次设置这些位的时间),我可以说不。但这不是我真正想要的:如果用户错打了3次甚至4次电话号码,我不想让他们等待

你有没有办法用DeviceCheck存储这些信息(n短信/h/用户)?

另外,我认为swift应用程序是经过编译的,所以用户看不到它的源代码。因此,我可以这样做,以确保用户是真实的:

  • 客户端请求服务器的密钥
  • 服务器向客户端返回一个随机密钥
  • 客户端在一个秘密的maner中加密这个密钥,一个没有人能看到的maner,因为源代码不可读
  • 客户端发送实际请求+它生成的令牌+服务器发送的密钥
  • 从密钥中,服务器取消对令牌的加密,如果令牌与发送的密钥不匹配,服务器将失败
您认为这样的流程可靠吗?