iOS 的应用有没权限获得用户设备的特征码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nikoo
V2EX    问与答

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

  •  
  •   nikoo 2017-06-14 13:07:34 +08:00 3558 次点击
    这是一个创建于 3106 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如一台 iPhone 7,安装了一个应用并登录了该应用的一个账号 A,
    然后退出账号并删除该应用,更换 IP 后重新安装该应用,再登录账号 B

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

    BTW:该应用未索要任何特殊权限
    33 条回复    2017-06-16 22:27:40 +08:00
    operafans
        1
    operafans  
       2017-06-14 13:08:44 +08:00
    UUID ?
    nikoo
        2
    nikoo  
    OP
       2017-06-14 13:11:21 +08:00
    @operafans 苹果拒绝 iOS 应用访问 UDID 和 IMEI
    在我的理解,一个普通应用的权限是无法确定唯一设备的,不知道对不对
    PP
        3
    PP  
       2017-06-14 13:15:58 +08:00 via iPad   1
    据我所知,在 iPhone 3 和 4 的时代很早期苹果允许应用获得设备识别码,后来担心隐私问题关闭了这个接口,现在不允许了,除非应用使用私有接口。
    paradoxs
        4
    paradoxs  
       2017-06-14 13:18:22 +08:00   1
    finab
        5
    finab  
       2017-06-14 13:23:50 +08:00   1
    keychain 呀 ,将登陆过的账号保存在 keychain 中。卸载 APP 不删除 keychain 里保存的
    nikoo
        6
    nikoo  
    OP
       2017-06-14 13:31:27 +08:00
    @paradoxs 谢谢,读完了,似乎该文章最终无法获得设备唯一 ID,最后是使用时间加激活次数来进行的反盗版?
    Citrus
        7
    Citrus  
       2017-06-14 13:43:44 +08:00
    搭车同问,iOS 应用能获取到我插的卡的手机号么?这两天拿了个安卓玩了玩,我擦居然不允许我禁止应用获取 IMEI 和手机号,打开微信点登陆手机号直接就输进去了。。。吓人。。。
    paradoxs
        8
    paradoxs  
       2017-06-14 13:52:41 +08:00   1
    @nikoo 办法肯定是有的, 你把 gmail 和百度贴吧, 卸了, 重新装, 还不是自动给你登录了.
    就算你关了 keychain
    nikoo
        9
    nikoo  
    OP
       2017-06-14 14:00:27 +08:00
    @finab @paradoxs /t/225463

    如果关闭 keychain 并且新系统只安装"百度贴吧"一个应用,登录后删除,重新装,他还能自动登录么?
    paradoxs
        10
    paradoxs  
       2017-06-14 14:02:47 +08:00
    @nikoo 可以的.
    nikoo
        11
    nikoo  
    OP
       2017-06-14 14:10:43 +08:00
    @paradoxs 百度这是用的什么黑科技,在删除应用后他把登录信息保存在哪了?(已关闭 keychain 的情况下)
    finab
        12
    finab  
       2017-06-14 14:22:35 +08:00   1
    @nikoo 兄弟,都说了是用 keychain 啦~ 你关闭的是 iCloud Keychain 吧~
    nikoo
        13
    nikoo  
    OP
       2017-06-14 14:26:21 +08:00
    @finab 的确关闭的是 iCloud Keychain,iPhone 上能否彻底关闭 keychain ?
    paradoxs
        14
    paradoxs  
       2017-06-14 14:57:42 +08:00
    iOS keychian 有分 icloud keychian 和 另外的 keychian 这个概念, 好像是很久之前 V2EX 首发的.

    我 google 了好久也没发现别处有这个说法
    sunhr
        15
    sunhr  
       2017-06-14 16:09:06 +08:00
    iOS10.3 之前,可以生成 UUID 写入 Keychain,卸载应用后 Keychain 内容保留。

    iOS10.3 及以上版本,卸载应用之后 Keychain 会被清空。

    楼上有童鞋提到 Google 和 Baidu,这两家的很多产品使用了 Keychain Sharing,也就是可以在一个开发者账号下的多个 Apps 之间共享 Keychain 的内容。

    在 iOS10.3 及以上版本,当共享一个 Keychain 的所有 Apps 都被卸载后,这个 Keychain 会被清空。
    kera0a
        16
    kera0a  
       2017-06-14 16:22:52 +08:00   1
    @nikoo 应该不能关闭

    @sunhr keychain 被删 是几个 beta 版才有的特性,最后一个 BETA 版和正式版不会删
    honeycomb
        17
    honeycomb  
       2017-06-14 16:31:16 +08:00
    iOS11 为开发者增加了读写一个非常受限的永久识别码的方案
    这里的永久指的是,这个识别码只有两个比特的容量,因此无法用于唯一性追踪。


    正如
    @sunhr 所说
    最后一个可以保留永久识别码的方法,也就是 Keychain 也受到了很大限制。

    @Citrus
    可以通过 AppOps 事实上阻止微信获取 IMEI 来补救
    但是说到底,微信从一开始就不可以要这个权限
    honeycomb
        18
    honeycomb  
       2017-06-14 16:32:42 +08:00
    @nikoo
    --如果关闭 keychain 并且新系统只安装"百度贴吧"一个应用,登录后删除,重新装,他还能自动登录么?

    在 iOS 10.3 以前,能自动登陆
    在 iOS 10.3 以后,不能(因上述 keychain 改动)

    如果手机内还有其它第三方应用,可能因为 Keychain Sharing 的缘故导致这个隐私措施被绕过
    sunhr
        19
    sunhr  
       2017-06-14 16:32:57 +08:00
    @kera0a

    卧槽我今天才知道 iOS10.3 正式版不会删
    kera0a
        20
    kera0a  
       2017-06-14 16:57:18 +08:00
    @sunhr 很多人只知道去掉了,不知道改回来了,坏事传千里嘛~ 删掉的新闻一大堆,改回来的新闻一条没有~
    这位兄弟也不知道呢 @honeycomb
    honeycomb
        21
    honeycomb  
       2017-06-14 17:00:34 +08:00 via Android
    @kera0a
    是有这个说法:

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

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

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

    我觉得不需要额外教程,应用自身的启动界面应当足以让你明白如何使用非 root 模式(从本地访问网络 adb 的接口)
    Citrus
        29
    Citrus  
       2017-06-15 13:55:17 +08:00 via iPhone
    @honeycomb 装成了李鬼,难怪。。。
    wzxjohn
        30
    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
        31
    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
        32
    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
        33
    wzxjohn  
       2017-06-16 22:27:40 +08:00
    @honeycomb 顺便说一个奇怪的问题,不知道是不是我手机的问题,在插卡之前,AppOps 是看不到 编辑短信 这个权限的,插卡之后才看到。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5262 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 01:30 PVG 09:30 LAX 17:30 JFK 20:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86