Ionic JS SDK 文档提到该API用于与运行核心 SDK 代码的 iframe 进行通信。postMessage
设备配置文件的localStorage
范围仅限于 iframe 的来源。
是什么阻止了 SDK JS 代码(以及后续的 iframe)被加载到恶意站点并用于访问用户创建的配置文件以加密/解密数据?
Ionic JS SDK 文档提到该API用于与运行核心 SDK 代码的 iframe 进行通信。postMessage
设备配置文件的localStorage
范围仅限于 iframe 的来源。
是什么阻止了 SDK JS 代码(以及后续的 iframe)被加载到恶意站点并用于访问用户创建的配置文件以加密/解密数据?
要创建新的设备配置文件,应用程序应调用该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
信息是从postMessage
iframe 内运行的 sdk 核心代码接收到的事件对象中提取的。
该loadUser
函数接受与相同的参数enrollUser
并执行相反的操作,从 localStorage 加载配置文件并对其进行解密。
所以总而言之
是什么阻止了 SDK JS 代码(以及后续的 iframe)被加载到恶意站点并用于访问用户创建的配置文件以加密/解密数据?
应用程序必须有权访问相同appId
的userId
、 和userAuth
值并在相同的情况下运行origin
才能访问由另一个应用程序创建的配置文件。
在实践中
appId
为给定应用程序硬编码(即在 js/html 中)userId
并userAuth
存储在应用程序用户的会话对象上。这些值可以通过 ajax 请求获取到应用程序的源服务器,也可以写入应用程序 html。这类似于CSRF 令牌的正常处理实践。