0

我们正在使用 Notification Hub 连接字符串(截至目前为静态代码)作为 NotificationHubSDK 注册方法的输入。Connection 字符串由两个参数 Service Bus Endpoint URI Shared Access Key 组成

问题陈述 - 我们在连接字符串中使用上述参数,它使用 react-native-azurenotificationhub 在我们的代码库中公开 URI+共享访问密钥,因此如果有人看到代码库,将能够通过此信息访问通知中心。这些可能导致以下威胁 如果有人可以访问代码,则可以向通知中心提出未经授权的注册请求。

可能的解决方案 -

Microsoft 推荐的安全性是创建仅用于侦听的访问策略,并建议不要使用完整的访问密钥进行客户端注册。(这必须在通知中心配置d,我一直在谈论) https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-push-notification-security

官方文档建议仅在代码库中使用具有 Listen 访问权限的连接字符串。 https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-android-push-notification-google-fcm-get-started

从后端代码(我们自己的 API)处理注册过程,实习生使用 Notification Hub Rest Api 的,设备将调用平台服务(FCM 或 APS)并获取设备令牌,然后将设备令牌传递给后端 API,

   For achieving above, we need to write our own code, and we cannot utilize the Azure SDK. 

创建一个 Web API,它将根据环境从应用设置 JSON 返回连接字符串。将从设备调用此 API 以动态获取连接字符串。

   We have discussed and finalized this solution as a workaround, and we are implementing the Web API part.  However, this also has below downside - 
   a. Need one extra API call in order to perform the device registration to notification hub
   b. At this point of time, our API is also not secure so anyone having access to the codebase can still access the final connection string. So the problem statement in the first place still not resolved.

请为我们提供最好的解决方案,让移动客户端可以安全地注册到通知中心。

请让我知道什么是最好的解决方案,

4

1 回答 1

0

查看以下有关安装和注册管理的帖子。

基本上,您已经很好地理解了安全问题。Notification Hubs 仅建议使用客户端应用程序分发“仅侦听”访问策略。但是,我相信您的问题,您的工作假设是需要一个完整的访问策略来创建注册。情况并非如此,您应该能够仅使用监听访问策略来创建安装和注册。

话虽如此,通过在后端处理注册来添加一层分离可能仍然是一个好主意。在您需要更新连接字符串的情况下,它将为您提供灵活性。当凭据嵌入应用程序时,如果您需要更改应用程序,您将不得不强制用户更新他们的应用程序。假设您有安全漏洞,您需要更改凭据。如果您有后端,您只需更改一些配置服务器端并继续前进。如果您不这样做,您的用户将在更新之前不再收到通知。显然,在两者之间,您的用户会有更好的体验。

于 2019-10-01T17:25:06.527 回答