现在很多 iOS App 用 Keychain 保存设备标识,这是滥用吗?和 Android App 用 imei 作为设备唯一标识的区别在哪?

2018-07-16 11:35:39 +08:00
 cairnechen
/t/456460
/t/471158
11020 次点击
所在节点    iDev
31 条回复
laoyur
2018-07-16 11:43:33 +08:00
算是一种滥用,keychain 本意是给你存密码的
但是大家都在这么用,苹果可能还不太敢一下子禁用这个 feature,打击面太大
再者每个应用也就占用那么点空间,并不会对 sqlite 数据库造成太大影响(来电拦截的数据库有 100M+你信不信),可能暂时就放任不管了
cairnechen
2018-07-16 11:50:35 +08:00
@laoyur 我觉得现在最大的问题是你没得选,App 想用就用,完全不需要经过你同意,Android 还可以禁用获取 IMEI 的权限呢
cairnechen
2018-07-16 11:53:27 +08:00
@laoyur 搜了一下苹果好像试图改过,但不知道怎么不了了之了
https://zhuanlan.zhihu.com/p/25708902
laoyur
2018-07-16 11:55:36 +08:00
也就只在 beta 版里改过,估计开发者反映强烈,就不了了之了
你的看法我是赞同的,非越狱用户确实无可奈何┓( ´∀` )┏
honeycomb
2018-07-16 11:56:00 +08:00
@cairnechen

1,是滥用,iOS11 的某几个 beta 曾经修复了这个漏洞,但后来便回滚了。

2,Android 的洞要多得多,比如 sdcard 分区权限的问题很难用 appops 对付。至于用 appops 能轻易挡住的也有 countermeasure,比如美团的某些应用就用了,它读到 IMEI 是 null ( appops 禁用的效果)也会原地爆炸。

至于应用无需任何权限便可获取的唯一识别码,在 Android 9 beta4 依然存在,即设备 WiFi 的 mac,这个问题从 Android 7 一路修到现在(通过 Android 自带 API 或 proc 文件系统的办法都堵上了)都没全修好。

国内厂商自己写的识别码库肯定在用。
honeycomb
2018-07-16 11:57:47 +08:00
还有,Android 的 ssaid (也就是应用可见到的 Android id )不会随着卸载-重装而变化(而是仅在恢复出厂 /不同用户之间使用不同的种子),这也是相比于 iOS 的漏洞。

iOS 里 appid 和 vendor id 都会随着应用卸载而失去意义
finab
2018-07-16 11:59:51 +08:00
区别在于某个 App 生成的唯一标识符 和 另外一个 APP 生成的不一样
不同公司的 APP 数据不能共享,就限制了跟踪
什么百度搜了啥,淘宝立马给你推荐就不能用这个了

其实没什么大用,满足了唯一标识符的刚需,想做坏事还是蛮难的
CastleBUPT
2018-07-16 12:04:33 +08:00
是滥用,虽然我是开发者,但是支持把这项禁用掉
huclengyue
2018-07-16 12:09:18 +08:00
@honeycomb 楼主只是在吐槽 ios 的 keychain 你为啥要在这翻安卓的问题。。。
wawehi
2018-07-16 12:10:39 +08:00
这个做个游客登录功能还是需要存下的,不然游戏让你无限刷账号?
kera0a
2018-07-16 12:13:06 +08:00
@wawehi 对,相对于 App 跟踪用户带来的坏处,也有很多刚需场景,不赞同去掉
honeycomb
2018-07-16 13:08:42 +08:00
@huclengyue 楼主提到了 Android 而且提问了 iOS 和 Android 的区别,那么在这里翻翻 Android 的做法(总体上比 iOS 差很多),并和 iOS 做比不是很合适嘛
Biscuits
2018-07-16 14:07:04 +08:00
是滥用, 区别在于 iOS 是 APP 自己生成的, Android 是设备绑定.
Biscuits
2018-07-16 14:09:24 +08:00
@wawehi 手动无限刷账户? 数据那么好看, 开发商还不乐死.
@kera0a 中国人要什么隐私.
kera0a
2018-07-16 14:22:24 +08:00
@Biscuits 请问这个会丢失你什么隐私
iwtbauh
2018-07-16 18:06:50 +08:00
@honeycomb 亲测美团 appops 禁用 IMEI 权限并没有任何影响
版本 9.4.2 (play 版本)
iwtbauh
2018-07-16 18:10:16 +08:00
@honeycomb 另外 Android 8.1 用户亲测没有 root 无法获取 mac 地址,我怕不是用了假 Android
iwtbauh
2018-07-16 18:14:19 +08:00
@iwtbauh #17 备注:我说的无法获取 mac 是指用 appops 禁用 WiFi 状态权限后,android 系统 api,/proc,以及 POSIX ioctl 都无法获取 mac 地址
icyalala
2018-07-16 18:29:20 +08:00
iOS App 存在 Keychain 里的东西,不是设备标识,这就是和安卓 IMEI 最大的区别。
IMEI 是设备终身唯一的,不会随着删除 App、重装系统之类的操作而改变。

iOS 的 OpenUDID 那套东西,是在 App 内随机生成一个字符串保存在 Keychain 里,只要 Keychain 清空,这个字符串也会消失,所以这玩意儿根本不是设备标识。目前只有在设置里面重置数据选项,或者刷机才能清空 Keychain。

只用于统计的话,IDFA 才是苹果提供的接口,而且这个也允许用户直接删除以去除追踪。用 Keychain 来保存确实不是苹果本意。但 Keychain 如果要是像 iOS 11 Beta 版那样,随着 App 删除而清空,那 Keychain 几乎就没什么用途了。
cairnechen
2018-07-16 18:33:42 +08:00
@icyalala
“目前只有在设置里面重置数据选项,或者刷机才能清空 Keychain。 ”
所以我认为他现在起到了设备标识的作用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX