iOS 的应用有没权限获得用户设备的特征码?

2017-06-14 13:07:34 +08:00
 nikoo
比如一台 iPhone 7,安装了一个应用并登录了该应用的一个账号 A,
然后退出账号并删除该应用,更换 IP 后重新安装该应用,再登录账号 B

那么该应用是否有能力知道在一台设备上登录了两个账号?

BTW:该应用未索要任何特殊权限
3196 次点击
所在节点    问与答
33 条回复
honeycomb
2017-06-14 17:00:34 +08:00
@kera0a
是有这个说法:

10.3 的测试版里有清理 keychain 的做法
10.3 正式版又取消了
honeycomb
2017-06-14 17:01:31 +08:00
@kera0a 可是清理 keychain 是好事,开发者持久追踪用户会因此更难以持久追踪用户
regicide
2017-06-14 17:32:08 +08:00
应该是可以的 之前抓过今日头条的包 里面有跟机的 device_id 不会变
mooczz
2017-06-14 18:01:12 +08:00
Keychain+UUID 可以实现,下个博雅斗地主看一下就知道了,只要你在这台设备登录过,删除再安装,会自动登录
Citrus
2017-06-14 18:08:38 +08:00
@honeycomb 确实不应该要,国产软件流氓多。。。唉。。。
AppOps 需要 root 么?
honeycomb
2017-06-14 22:07:24 +08:00
@Citrus
无需 root
手机应用可以使用网络 adb 模式,局限是每次重启手机需要重新启用一次网络 adb

当然也可使用 root 模式,或把应用安装到 system/priv-app

也可以手动通过 abd shell 的 appops 命令设置
Citrus
2017-06-15 11:06:34 +08:00
@honeycomb 有相关教程么?我在 Google Play 上下下来直接要求 root 安装=。=
honeycomb
2017-06-15 11:09:16 +08:00
@Citrus

我觉得不需要额外教程,应用自身的启动界面应当足以让你明白如何使用非 root 模式(从本地访问网络 adb 的接口)
Citrus
2017-06-15 13:55:17 +08:00
@honeycomb 装成了李鬼,难怪。。。
wzxjohn
2017-06-16 14:41:46 +08:00
@honeycomb 今天测试了一下 AppOps,发现一个很奇怪的问题。getLine1Number 这个 API 在文档中写的是需要:
READ_PHONE_STATE, READ_SMS or READ_PHONE_NUMBERS
这样的权限,那么是不是任意一个允许其中一个,就能调用呢?
更奇怪的是,我明明已经关了 READ_SMS 这个权限,但是保留了 SEND_SMS 的权限(通过 AppOps ),这个应用还是能通过 getLine1Number 获取到手机号。。。这是为啥。。。
honeycomb
2017-06-16 15:51:40 +08:00
@wzxjohn
考虑看一下 getLine1Number 的实现?

看上去这个接口应该是由 OP_READ_PHONE_STATE 管的
所以 READ_SMS/SEND_SMS 这两个 OP 和 getLine1Number 无关

确实是这样
https://android.googlesource.com/platform/frameworks/base/+/android-7.1.2_r12/telephony/java/android/telephony/TelephonyManager.java

里面有一句

number = telephony.getLine1NumberForDisplay(subId, mContext.getOpPackageName());
后面的参数就是要把调用这个接口的应用包名传进去,appops 负责检查这个包是否可以执行特定的 OP
但它的具体实现在 ITelephony.java 里,是要通过 ITelephony.aldl 生成的
wzxjohn
2017-06-16 22:26:57 +08:00
@honeycomb 找了半天,发现实现权限判断的部分是内部实现,是否说明其实不同的安卓系统可能判断不同?
还有,这段代码的 Java Doc 里面写的也是

Requires Permission:
READ_PHONE_STATE
OR
READ_SMS

搜了一下发现有人遇到过这个问题,在 6.x 之后二者有一个即可,6.x 之前只能用 READ_PHONE_STATE。。。
wzxjohn
2017-06-16 22:27:40 +08:00
@honeycomb 顺便说一个奇怪的问题,不知道是不是我手机的问题,在插卡之前,AppOps 是看不到 编辑短信 这个权限的,插卡之后才看到。。。

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

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

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

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

© 2021 V2EX