对于需要推送通知的 iOS 应用程序,它必须首先请求用户允许这样做。之后,生成一个设备令牌,远程服务器可以通过这个令牌与用户进行通信。
我在这里读过一个类似的问题,但我觉得这还不够。下图是一个受信任的证书,它允许我查看此设备上发生的所有流量。
使用Fiddler2和CertMaker,我可以嗅探 HTTPS 流量,这意味着客户端可能知道他们正在发送什么数据以及发送到哪里。
我的问题是,知道 SSL 不安全,无法保护我的客户看到我发送到远程服务器的内容,我是否应该简单地使用在我的应用程序中找到的密钥加密?
比如encrypt("device_token","secretkey_a0a0a0a")
(假装这是Objective-C)?
有人不能在我的应用程序中找到那个密钥吗?我也读了这个问题,似乎有可能取回密钥。
我的计划是这样的:
- 在 iOS 应用程序中,生成一个名为
activate
. - 通过随机字符串和我只知道的密钥加密(不是散列)令牌。(secretkey_a0a0a0)
- 将加密字符串与生成的随机生成的字符串(活动)一起发送。
- 在服务器端,我检查是否可以使用
active
和我的密钥解密有效令牌。 - 如果令牌有效,我将其保存在我的数据库中。
这可以防止人们随机输入标记,但是,secretkey_a0a0a0
是字符串文字。很有可能在应用程序二进制文件本身中得到它。
我的问题是,如何保护这个密钥?答案也可以是,我怎样才能防止人们也向我的服务器发送无效令牌。
我听说过加密,但这不只适用于资源文件吗?
我应该如何处理这个?