android - 设备指纹识别(Android 和 iOS)

标签 android ios fingerprinting

<分区>

我需要一种方法来唯一标识 Android 和 iOS 设备,即使在我的应用程序被卸载并再次安装后也是如此。 ANDROID_ID 和 UUID 都不做这项工作。 也许有一些图书馆致力于这项任务?

最佳答案

关于 iOS 端,如 this thread 中所述:

爱斯基摩人的回答:

“出于隐私方面的考虑,iOS 对唯一持久标识符施加了严格的限制。有几个 WWDC session 讨论了这个问题,我强烈建议您观看它们:

  1. WWDC 2012 Session 710 iOS 和 OS X 中的隐私支持
  2. WWDC 2013 session 714 保护您的用户隐私
  3. WWDC 2014 session 715 iOS 和 OS X 中的用户隐私
  4. WWDC 2015 session 703 隐私和您的应用
  5. WWDC 2016 session 709 用户工程隐私

鉴于上述情况,无论现在还是永远,在不相关的应用程序中都没有唯一标识 iOS 设备的单一值。相反,有一套选项可供您使用,您使用哪个选项取决于您的要求。”

这里是 another thread对于 iOS,Eskimo1 描述了您可以做什么:

  1. 使用 MDM 获取设备的 UDID 和 IMEI
  2. 使用该信息在您的设备数据库中创建一条记录
  3. 生成一个随机的唯一 ID 并将其添加到您的设备数据库
  4. 使用托管应用首选项将该唯一 ID 推送到您的应用
  5. 然后您的应用可以将该唯一 ID 添加到请求中,您可以根据该 ID 查找所需的信息

在我前段时间开发的应用程序中,我们使用了第三个选项。

至于安卓端: 如 'Best practices for unique identifiers' 中所述:

“1:避免使用硬件标识符。在不限制所需功能的情况下,在大多数用例中可以避免使用硬件标识符,例如 SSAID (Android ID) 和 IMEI。

2:仅将广告 ID 用于用户分析或广告用例。使用广告 ID 时,请始终尊重限制广告跟踪标志,确保标识符不会与个人身份信息 (PII) 相关联,并避免桥接广告 ID 重置。

3:对于除支付欺诈预防和电话之外的所有其他用例,尽可能使用实例 ID 或私有(private)存储的 GUID。对于绝大多数非广告用例,实例 ID 或 GUID 就足够了。

4:使用适合您的用例的 API 以最大限度地降低隐私风险。使用 DRM API API 保护高值(value)内容,使用 SafetyNet API 防止滥用。 Safetynet API 是确定设备是否为正品且不会引发隐私风险的最简单方法。”

此外,我建议您阅读 this article到其中描述了 Android 的所有方法。

关于android - 设备指纹识别(Android 和 iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50600969/

相关文章:

java - Camera.Parameters 设备特定崩溃(Samsung S3 Mini)

ios - GPU图像性能

ios - 无法在UITableView中删除indexpath

javascript - 在这种情况下唯一识别用户的最佳方法是什么?

api - 是否可以在服务器端生成 Google App Invite?

android - 用于繁重计算的 WebAssembly + WebView + Javascript 接口(interface)?

android - 如何从 WebView 访问 Android 的条码扫描器?

android - GWT 应用程序在 Android 浏览器中运行良好吗?

ios - 如何将图像绘制到另一个 UIImage 上以创建一个 UIImage

ios - 是否存在防止DeviceCheck时间戳充当指纹的机制?