由网站安装的iOS证书允许将设备UUID与会话关联

6
我希望能够在网页中读取iOS设备的UUID。我知道使用JavaScript是不可能的,因为存在明显的安全问题,但我每天都使用testflight,我可以看到他们可以访问设备的UUID。
看起来,他们是通过在您注册设备时在您的iPhone上安装一种预配配置文件来实现的。
我想知道应该使用什么样的证书/预配配置文件来做类似的事情?
然后,我将能够将设备UUID链接到网页会话。我知道这需要用户的确认,这对我来说完全没有问题。我并不是试图绕过我们无法从代码中访问设备UUID的事实,我之所以这样问是因为我知道testflight正在这样做。
1个回答

3

好的!我现在明白了。

你说得对,当然不是浏览器发送UDID。我曾经认为这是Safari的安全漏洞之一,或者类似于此的东西,因为testflightapp添加了一个类似UDID的唯一标识符,但事实并非如此。

实际上,他们生成了一个新的DeviceID(与UDID无关)。然后,为了注册设备,他们生成了一个专门针对该DeviceID制作的配置文件,其中包含一个Enrollment Payload,该配置文件将该设备注册到一个包含testflightapp生成的此DeviceID的URL上。

在此注册过程中,配置文件要求设备发送UDID(以及其他数据)。这是配置文件要求的信息:

<array>
    <string>UDID</string>
    <string>IMEI</string>
    <string>ICCID</string>
    <string>VERSION</string>
    <string>PRODUCT</string>
    <string>MODEL</string>
    <string>DEVICE_NAME</string>
</array>

因此,当设备请求testflightapp服务器进行注册时,他们能够将存储在配置文件中的DeviceID与当前设备的实际UDID关联起来。这就是他们如何在浏览器中显示完成流程并保留UDID的方式。
但是,这并没有完全解答问题,因为我还没有解决(至少目前没有)如何实际将此网络会话与UDID相关联,即使会话失效,DeviceID也变得孤立。答案似乎是(尚未确认,但有99%的把握!),注册过程允许定义WebClip插入您的Springboard菜单。此WebClip的URL中写有设备的UDID,因此每次通过此WebClip进入testflightapp时,都会刷新您的UDID号码,因此即使会话结束也无所谓。
希望我的帖子现在有所帮助!对于之前不完整或信息错误的内容再次表示抱歉。

听起来非常不错。我自己还没有检查过,因为我目前并没有在实现这样的功能。谢谢! - rpechayr
我目前正在关注这个确切的领域。我相信Webclip指定了与URL匹配的签名信息(在这种情况下为*.testflightapp.com),并且每当iOS Safari访问与该模式匹配的URL时,签名信息也会被发送。而该签名信息将您的请求与您的UDID / 您的帐户绑定。 - occulus
如果您查看Springboard快捷方式的WebClip URL,则URL不包含任何用户信息。正如先前提到的那样,它们依赖于签名证书。 - occulus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接