Bluemix 推送服务安全问题

Bluemix Push service security concern

我们在我们的 Bluemix 应用程序(为 iOS 客户提供服务)上使用 IBM Push-Notification 服务和 Mobile-App-Security。

为了发送推送通知,我们的服务器发送了一个 POST 请求到:https://mobile.ng.bluemix.net/push/v1/apps/{application-id}/messages

使用 Ibm-Application-Secret header 中的应用程序秘密(按照说明 here)。

要在我们的应用程序中初始化 Mobile-App-Security SDK,您需要 application-id 和 application-secret - 这意味着应用程序本身必须包含这些值(作为常量参数或下载它从服务器)。如果恶意用户使用简单的 reverse-engineering 获取这些值,他将能够发送相同的 POST 请求,即向其他客户端发送推送通知,对吗?

不应该有两个application-secret吗?应用程序的一个秘密(使得伪造注册变得困难 - 即要求 reverse-engineering)和服务器的一个秘密(允许发送通知并且永远不应存储在 client-side 上)。

是否可以在没有应用程序密钥的情况下初始化 Mobile-App-Security iOS SDK?

移动设备在 Bluemix 上的服务器 运行 上使用其唯一设备 ID 进行注册。如果您不信任某个设备,您可以向该设备发送带有密钥的推送通知并请求返回。如果你找回这个密钥,设备也已经在 Google 或 Apple 注册成功。

我理解你的担忧。解决您的所有问题:
-您必须在客户端拥有应用程序密码才能通过 MAS 进行身份验证并使用推送服务(推送依赖于 MAS 身份验证)
- 我们建议实施您自己的安全形式,以防止恶意用户轻松获取 App Secret。例如,加密存储应用程序机密的文件,或仅加密应用程序机密本身。

如果您正在寻找更强大的内置安全级别,我建议您使用更新的 MobileFirst Services Starter,它支持推送和高级移动访问服务 (AMA),目前仅适用于iOS8.