1
laoyur 2018-07-16 11:43:33 +08:00
算是一种滥用,keychain 本意是给你存密码的
但是大家都在这么用,苹果可能还不太敢一下子禁用这个 feature,打击面太大 再者每个应用也就占用那么点空间,并不会对 sqlite 数据库造成太大影响(来电拦截的数据库有 100M+你信不信),可能暂时就放任不管了 |
2
cairnechen OP @laoyur 我觉得现在最大的问题是你没得选,App 想用就用,完全不需要经过你同意,Android 还可以禁用获取 IMEI 的权限呢
|
3
cairnechen OP |
4
laoyur 2018-07-16 11:55:36 +08:00
也就只在 beta 版里改过,估计开发者反映强烈,就不了了之了
你的看法我是赞同的,非越狱用户确实无可奈何┓( ´∀` )┏ |
5
honeycomb 2018-07-16 11:56:00 +08:00 via Android 2
@cairnechen
1,是滥用,iOS11 的某几个 beta 曾经修复了这个漏洞,但后来便回滚了。 2,Android 的洞要多得多,比如 sdcard 分区权限的问题很难用 appops 对付。至于用 appops 能轻易挡住的也有 countermeasure,比如美团的某些应用就用了,它读到 IMEI 是 null ( appops 禁用的效果)也会原地爆炸。 至于应用无需任何权限便可获取的唯一识别码,在 Android 9 beta4 依然存在,即设备 WiFi 的 mac,这个问题从 Android 7 一路修到现在(通过 Android 自带 API 或 proc 文件系统的办法都堵上了)都没全修好。 国内厂商自己写的识别码库肯定在用。 |
6
honeycomb 2018-07-16 11:57:47 +08:00 via Android
还有,Android 的 ssaid (也就是应用可见到的 Android id )不会随着卸载-重装而变化(而是仅在恢复出厂 /不同用户之间使用不同的种子),这也是相比于 iOS 的漏洞。
iOS 里 appid 和 vendor id 都会随着应用卸载而失去意义 |
7
finab 2018-07-16 11:59:51 +08:00
区别在于某个 App 生成的唯一标识符 和 另外一个 APP 生成的不一样
不同公司的 APP 数据不能共享,就限制了跟踪 什么百度搜了啥,淘宝立马给你推荐就不能用这个了 其实没什么大用,满足了唯一标识符的刚需,想做坏事还是蛮难的 |
8
CastleBUPT 2018-07-16 12:04:33 +08:00
是滥用,虽然我是开发者,但是支持把这项禁用掉
|
9
huclengyue 2018-07-16 12:09:18 +08:00 via Android
@honeycomb 楼主只是在吐槽 ios 的 keychain 你为啥要在这翻安卓的问题。。。
|
10
wawehi 2018-07-16 12:10:39 +08:00 via iPhone 1
这个做个游客登录功能还是需要存下的,不然游戏让你无限刷账号?
|
12
honeycomb 2018-07-16 13:08:42 +08:00 via Android
@huclengyue 楼主提到了 Android 而且提问了 iOS 和 Android 的区别,那么在这里翻翻 Android 的做法(总体上比 iOS 差很多),并和 iOS 做比不是很合适嘛
|
13
Biscuits 2018-07-16 14:07:04 +08:00
是滥用, 区别在于 iOS 是 APP 自己生成的, Android 是设备绑定.
|
16
iwtbauh 2018-07-16 18:06:50 +08:00 via Android
@honeycomb 亲测美团 appops 禁用 IMEI 权限并没有任何影响
版本 9.4.2 (play 版本) |
17
iwtbauh 2018-07-16 18:10:16 +08:00 via Android
@honeycomb 另外 Android 8.1 用户亲测没有 root 无法获取 mac 地址,我怕不是用了假 Android
|
18
iwtbauh 2018-07-16 18:14:19 +08:00 via Android
@iwtbauh #17 备注:我说的无法获取 mac 是指用 appops 禁用 WiFi 状态权限后,android 系统 api,/proc,以及 POSIX ioctl 都无法获取 mac 地址
|
19
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 几乎就没什么用途了。 |
20
cairnechen OP |
21
huclengyue 2018-07-16 18:37:43 +08:00 via Android
@icyalala IMEI 是可以改的。不过要高通和 mtk 的工具。前几年的韩版,美版手机打开移动,电信网络就是通过这个。安卓也提供了 systemID Android ID 只是跟 ios 一样 没人用这个
|
22
beimenjun 2018-07-16 18:46:41 +08:00
https://developer.apple.com/documentation/devicecheck
你可以了解一下这个,这个东西设计就是在保护用户隐私的前提下,标记用户是否享受过相关优惠之类的商业逻辑。很多不是用 Keychain,就是用这个。 |
23
GTim 2018-07-16 18:49:38 +08:00
不算乱用,因为级别不一样
|
24
honeycomb 2018-07-16 18:52:22 +08:00 via Android
@iwtbauh 你提到的方法确实都封堵了,这次发现的可以到 issuetracker ( developer preview 的)上看,好像是半年前就已经发现了。
是用 Java 自己的一个 API 枚举出和网络有关的对象,然后可以从那个对象里取出 WiFi 的 mac 具体名字不记得,确认至少 8.1 与 p 都能复现,再早的 Android 版本没有尝试过。 |
25
cairnechen OP @beimenjun
知道这个,但我举的这些例子,比如虎扑、知乎这些,能够保存你的关注的球队,用户、话题、专栏,还有收藏的回答,显然已经不是 devicecheck 能实现的了 |
26
icyalala 2018-07-16 19:25:10 +08:00
@cairnechen 你问的是区别嘛,区别就是普通用户有没有能力改掉。
IMEI、MAC 之类的,本身设计的就是设备标识。随机生成字符串那个,只能算是没有设备标识可用的情况下一种 workaround,还很脆弱很不靠谱,实际统计结果还不如苹果的 IDFA 准确。 |
27
icyalala 2018-07-16 19:25:47 +08:00
@beimenjun DeviceCheck 那个东西,且不说是 iOS 11 only 的,2bit 也就能存 4 个状态。苹果从来不为企业开发者考虑,从来没有。。对于个人开发者,App 标识一个优惠或者试用功能,那 2bit 够用。企业 App 可能需要存很多状态和设备相关数据,2bit 简直就是嘲讽。。苹果要是把这个做好,然后再允许用户手动删除单个 App Keychain,那不论开发者还是用户,大家谁都没话说。
|