1

Ionic JS SDK 文档提到该API用于与运行核心 SDK 代码的 iframe 进行通信postMessage设备配置文件的localStorage范围仅限于 iframe 的来源。

是什么阻止了 SDK JS 代码(以及后续的 iframe)被加载到恶意站点并用于访问用户创建的配置文件以加密/解密数据?

4

1 回答 1

1

要创建新的设备配置文件,应用程序应调用该enrollUser函数;见:https ://api.ionic.com/jssdk/latest/Docs/tutorial-device_enrollment.html

从文档

在 10 分钟的超时窗口内成功进行身份验证后,注册配置文件将加密存储在 localStorage 中的 appId、userId 和调用应用程序的来源下。

所以配置文件是加密存储的。配置文件还按 origin、appid 和 userId 嵌套和命名空间存储,如下所示(请参阅 中的queryProfiles函数ProfileManager.js):

配置文件[origin][appId][userId]

请注意,origin信息是从postMessageiframe 内运行的 sdk 核心代码接收到的事件对象中提取的。

loadUser函数接受与相同的参数enrollUser并执行相反的操作,从 localStorage 加载配置文件并对其进行解密。

所以总而言之

是什么阻止了 SDK JS 代码(以及后续的 iframe)被加载到恶意站点并用于访问用户创建的配置文件以加密/解密数据?

应用程序必须有权访问相同appIduserId、 和userAuth在相同的情况下运行origin才能访问由另一个应用程序创建的配置文件。

在实践中

  • appId为给定应用程序硬编码(即在 js/html 中)
  • userIduserAuth存储在应用程序用户的会话对象上。这些值可以通过 ajax 请求获取到应用程序的源服务器,也可以写入应用程序 html。这类似于CSRF 令牌的正常处理实践
于 2019-07-09T19:46:43.133 回答