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