V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maleclub
V2EX  ›  Android

禁止 App 借助营运商获取手机号码以实现一键登录

  •  1
     
  •   maleclub · 2023-09-26 23:56:35 +08:00 · 16046 次点击
    这是一个创建于 457 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看贴 https://www.v2ex.com/t/939831 有感,不想让手机上的几个 app (美团,支付宝,还有银行类)有可能借此获得我的手机号码,特意测试了一下。方法也比较简单。

    • 已 root 的手机通过文件管理工具(我用 x-plore )修改 /system/etc/hosts 文件,插入以下内容,重启手机即可。
    # 中国移动
    0.0.0.0 config.cmpassport.com
    0.0.0.0 www.cmpassport.com
    0.0.0.0 wap.cmpassport.com
    0.0.0.0 onekey1.cmpassport.com
    0.0.0.0 log1.cmpassport.com
    0.0.0.0 smsks1.cmpassport.com
    0.0.0.0 verify.cmpassport.com
    
    # 中国联通
    0.0.0.0 opencloud.wostore.cn
    0.0.0.0 auth.wosms.cn
    0.0.0.0 id.mail.wo.cn
    0.0.0.0 mdn.open.wo.cn
    0.0.0.0 hmrz.wo.cn
    0.0.0.0 nishub1.10010.com
    0.0.0.0 enrichgw.10010.com
    
    # 中国电信
    0.0.0.0 id6.me
    0.0.0.0 open.e.189.cn
    
    • 未 root 手机,借助 Virtual Hosts 这个 app 也可以。
    第 1 条附言  ·  2023-09-27 18:10:56 +08:00
    补充下 38 楼提到的,正是我的使用情景。双卡手机,一张移动卡,一张联通卡,差分隐私处理,注册都用的移动号,这个号是 8 元保号套,只用来收短信验证码,快递取件码;另一个联通号才是主力,流量都走这张卡,如果不屏蔽掉一键登录,每次 App 都会通过运营商 SDK 拿到联通的号的前三和后四位,我不愿意暴露这个号,所以这样做是有意义的。

    另外,我手机有时候会插其他同事的卡做一些软件的测试,并不想被获取。
    63 条回复    2024-11-08 19:32:30 +08:00
    huiyifyj
        1
    huiyifyj  
       2023-09-27 00:04:14 +08:00
    不错,可以配合 AdGuard Home DNS 使用
    maleclub
        2
    maleclub  
    OP
       2023-09-27 00:14:24 +08:00
    host 规则补充多一个营运商

    ```BASH
    # 中国广电
    0.0.0.0 Idk.
    ```
    bitfly
        3
    bitfly  
       2023-09-27 00:20:40 +08:00 via Android
    借助 v2rayng 不是也可以吗 即可以上 V2EX 又可以屏蔽牛氓网站
    GeekGao
        4
    GeekGao  
       2023-09-27 00:27:57 +08:00   ❤️ 2
    为啥禁止,这是网关取的数据不是从你本机。你不授权是不会取号的。
    baobao1270
        5
    baobao1270  
       2023-09-27 01:52:39 +08:00
    没啥用吧,App 走 HTTPDNS 就无法屏蔽了
    hellomynameis
        6
    hellomynameis  
       2023-09-27 08:31:37 +08:00   ❤️ 1
    @GeekGao 全民大开盒,而且如果手机里插了 86 卡还尝试用+1 注册,这个一键登录风控系统会很麻烦
    TESTFLIGHT2021
        7
    TESTFLIGHT2021  
       2023-09-27 09:24:35 +08:00   ❤️ 1
    没用 你插上卡 他就可以记录 屏蔽 IP 只是让你无法验证
    Rache1
        8
    Rache1  
       2023-09-27 09:32:35 +08:00
    小米部分机型可以在设置、应用权限里面禁止 “获取手机号码用于一键登录” 权限
    WebKit
        9
    WebKit  
       2023-09-27 09:59:27 +08:00 via Android
    小米可以在设置里直接禁用
    wOuv7i4e7XxsSOR1
        10
    wOuv7i4e7XxsSOR1  
       2023-09-27 10:04:18 +08:00   ❤️ 2
    建议先去了解一下开发一键登录的开发流程
    kkk123
        11
    kkk123  
       2023-09-27 10:07:47 +08:00
    @baobao1270 httpdns 域名也禁止,暂时没什么问题
    a1274598858
        12
    a1274598858  
       2023-09-27 10:33:07 +08:00
    还好我的小米自带弹窗询问
    maleclub
        13
    maleclub  
    OP
       2023-09-27 10:36:38 +08:00 via Android
    @GeekGao 前提是要先设置应用读取权限,阻止读取手机号跟 IMEI(我用 App Ops)。 @baobao1270 你说 App 走 HTTPDNS 就无法屏蔽了?有什么软件?我测试下,我测试了好几个银行跟应用宝头部的 10 来个常用 app 还没遇到过。
    hellomynameis
        14
    hellomynameis  
       2023-09-27 10:42:49 +08:00
    @TESTFLIGHT2021 只能达到 TikTok 的程度精确到识别运营商是哪家,用户不授权不能得到详细手机号
    imnpc
        15
    imnpc  
       2023-09-27 10:53:04 +08:00
    哪里发的教程啊 SDK 获取手机号根本不走这些好吗...
    xFrye
        16
    xFrye  
       2023-09-27 11:04:38 +08:00
    一键登录 SDK 根本就不需要 read phone state 这种权限好吗。。。
    32uKHwVJ179qCmPj
        17
    32uKHwVJ179qCmPj  
       2023-09-27 12:08:29 +08:00
    关掉 APP 的 4G 访问权限就行了,不过没 wifi 的情况下 app 就没网
    learningman
        18
    learningman  
       2023-09-27 12:22:23 +08:00 via Android
    你都知道是借助运营商了,你在本地改有啥用
    xx219
        19
    xx219  
       2023-09-27 13:37:34 +08:00
    一键登录用的是运营商的 api ,不需要设备权限
    monkeyzsf
        20
    monkeyzsf  
       2023-09-27 13:42:26 +08:00
    @jdkxnktkdkxod #10 确实,这样做只能屏蔽一键登录,本来就拿不到手机号
    wOuv7i4e7XxsSOR1
        21
    wOuv7i4e7XxsSOR1  
       2023-09-27 13:49:51 +08:00   ❤️ 1
    这种就是典型的书读的不多但想得太多
    1 ,一键登录是运营商提供的接口,不需要本机的任何权限
    2. 使用一键登录的 sdk 如果你本身不点确认登录,你能拿到只有前三位和后四位,根本拿不到完整的手机号
    建议去详细了解一下接入一键登录的流程
    lambdaq
        22
    lambdaq  
       2023-09-27 13:53:43 +08:00
    @jdkxnktkdkxod 前三位后四位够做很多事里。
    opengps
        23
    opengps  
       2023-09-27 13:56:48 +08:00
    禁止并没有作用啊,因为最终登陆后,还是知道你绑定的手机号,一键登录只是方便了使用的地方
    Robertwhite
        24
    Robertwhite  
       2023-09-27 13:59:02 +08:00
    不想让 APP 获取手机号?现在各种 APP 不都是要短信验证的吗?我倒是好奇怎么做到手机号不被 APP 知道,我上次想体验个 AI 生成图片的,国内的各种网站都已经要手机号登录注册了,无赖只能放弃了
    hoythan
        25
    hoythan  
       2023-09-27 14:00:45 +08:00
    一键登录功能是运营商提供的 API 啊
    hoythan
        26
    hoythan  
       2023-09-27 14:06:02 +08:00
    我觉得与其担心 App 获取你的手机号,不如担心运营商获取到你的手机号,但是运营商获取,不如直接研究如何用国外运营商的电话卡,所以最终建议就是不要用电话卡。
    iseki
        27
    iseki  
       2023-09-27 14:17:39 +08:00 via Android   ❤️ 1
    你们在干啥啊,贴主不是写了 host 把运营商获取手机号的网关给屏蔽了么,和手机权限有什么关系?
    gadfly3173
        28
    gadfly3173  
       2023-09-27 14:31:41 +08:00 via Android
    @iseki 13 楼里 op 说要禁止电话权限
    vivisidea
        29
    vivisidea  
       2023-09-27 14:34:17 +08:00
    不想让手机上的几个 app (美团,支付宝,还有银行类)有可能借此获得我的手机号码

    ===
    我是没太懂,意思是这几个 app ,都不是你自己手机号注册的?
    Maboroshii
        30
    Maboroshii  
       2023-09-27 14:38:47 +08:00 via Android
    友盟的 sdk 可以通过运营商获取完整手机号喔
    wangmou
        31
    wangmou  
       2023-09-27 14:44:53 +08:00
    @iseki 楼主自己说的原话要权限,别人给他科普他还不信
    devopsdogdog
        32
    devopsdogdog  
       2023-09-27 14:51:13 +08:00
    稍微试过就知道,只有有移动网络就能拿到你的手机号。
    sunshower
        33
    sunshower  
       2023-09-27 14:53:43 +08:00
    屏蔽有什么用,里面用的地址不还是有手机号
    GeekGao
        34
    GeekGao  
       2023-09-27 15:18:27 +08:00
    @hellomynameis 果手机里插了 86 卡还尝试用+1 注册 ? 你不国际开漫游就取不到你美国的号码 😊这是网关取号,与 3G Wap 门户时代的认证同一个道理。
    yeh
        35
    yeh  
       2023-09-27 15:19:05 +08:00
    1 年多前写了个 surge 插件,直接 reject 这几个域名。

    不想去理解什么登陆步骤,什么开发流程,什么 api 文档。 单纯就是不想看见那个弹窗,连 google 联合登陆的弹窗都屏蔽了。谁出来登录提示的弹窗,就屏蔽谁。
    GeekGao
        36
    GeekGao  
       2023-09-27 15:19:34 +08:00   ❤️ 1
    @maleclub 不需要 IMEI 的,你的 SIM 卡联入运营商网络的后信令通信过程运营商已经获取到了
    shijingshijing
        37
    shijingshijing  
       2023-09-27 15:42:08 +08:00
    @vivisidea 假如我是双卡手机,一张移动卡,一张联通卡,差分隐私处理,注册都用的移动号,这个号是 8 元保号套,只用来收短信验证码,快递取件码;另一个联通号才是主力,流量都走这张卡,如果不屏蔽掉一键登录,每次 App 都会通过运营商 SDK 拿到联通的号的前三和后四位,我不愿意暴露这个号,所以这样做是有意义的。
    maleclub
        38
    maleclub  
    OP
       2023-09-27 17:28:45 +08:00 via Android
    @shijingshijing 看来你是最明白事理的人,我就是双卡要避开这个问题,赞👍。
    Eiden
        39
    Eiden  
       2023-09-27 17:43:26 +08:00   ❤️ 2
    掩耳盗铃有一手
    easylee
        40
    easylee  
       2023-09-27 17:49:49 +08:00
    @maleclub #38 建议将 @shijingshijing #37 提到的场景 append ,避免帖子内更多无意义的回复。
    GeekGao
        41
    GeekGao  
       2023-09-27 17:53:51 +08:00
    @shijingshijing “每次 App 都会通过运营商 SDK 拿到联通的号的前三和后四位” 这描述是不准确的。
    因为不论是移动还是电信,SDK 都是开放平台提供的,能力是官方(即运营商)封装好的,在未授权时应用接入方面(即 APP 端)是拿不到的。虽然你可以见到,但是并不意味着 APP 可以拿到。

    当然如果杠一下说:程序截屏啊、0day 啊啥的,当我没说 😓
    maleclub
        42
    maleclub  
    OP
       2023-09-27 18:08:12 +08:00 via Android
    @easylee 好的,建议不错。
    GeekGao
        43
    GeekGao  
       2023-09-27 18:14:23 +08:00
    @maleclub 较个真: 双卡你测过吗,通常一键登录 sdk 只会切 4G 网后与网关通信,双卡双待手机只取当前流量卡号啊,难不成你两张卡都能同时识别?
    D6IIx
        44
    D6IIx  
       2023-09-27 18:21:26 +08:00
    @GeekGao app 不让你用密码登陆呢?不授权输入密码显示错误,签了授权之后就正常了,协议正文的修改和解释权都在对方手里
    shijingshijing
        45
    shijingshijing  
       2023-09-27 18:39:38 +08:00
    @D6IIx 现在的 App 还不至于这么疯狂,毕竟要考虑到 WIFI 条件下登录的情况。强迫要求使用流量登录,我还只看到部分银行的 App 在首次登录时会有这种要求。
    gadfly3173
        46
    gadfly3173  
       2023-09-27 18:41:25 +08:00 via Android
    @D6IIx 你这个场景题主的办法也搞不定啊?甚至可以说没有办法能解决,毕竟登录接口是人家的
    gadfly3173
        47
    gadfly3173  
       2023-09-27 18:44:23 +08:00 via Android
    同 39 楼的说法,此举就是掩耳盗铃,运营商的 sdk 完全可以换个域名/使用自己的加密 dns ,只要你入网了运营商就知道你的手机号,要不要提供给 app 完全由运营商决定,毕竟获取手机号的回调是在服务端的,app 端只是给你个界面获取你的授权。
    shijingshijing
        48
    shijingshijing  
       2023-09-27 19:01:43 +08:00
    @GeekGao 你理解错了,我告诉你这个流程是怎么操作的吧。
    以淘宝 App 和联通 SDK 为例,淘宝 App 在上架之前就已经集成了联通 SDK ,用户首次登录的时候,如果使用手机 4G/5G 数据网络登录,不做任何防护措施,淘宝 App 能通过联通 SDK 拿到 135****8888 这种形式的不完整本机号码的,不需要用户授权和同意(或者说这部分授权和同意是你办联通卡入网的时候已经完成了),这个不完整的号码已经可以用来做用户画像了。当你不选择使用用户名密码或者手机号验证码登录,继续一键登录的时候,淘宝 App 会提示你需要你授权,这个时候有三个确认项,一个是联通的一键登录授权;另外两个是淘宝的登录和隐私授权。如果你确认了,登录成功,淘宝 App 此时能获取你当前使用的流量卡的完整号码,比如 13515158888 。

    如果是双卡手机,你注册淘宝的时候又不是用的 13515158888 这个号,而是手机上另一个没开流量的移动号码,意味着淘宝能获取到你的两个号码。
    billlee
        49
    billlee  
       2023-09-27 19:07:39 +08:00 via Android
    @GeekGao 不需要什么截图啊 0day 啊, in app webview 受 app 控制,直接读取 DOM, 或者帮你点确认都是可以的
    smlcgx
        50
    smlcgx  
       2023-09-27 19:09:43 +08:00 via iPhone
    运营商侧的,联通可以打电话要求关闭
    hellomynameis
        51
    hellomynameis  
       2023-09-27 20:50:34 +08:00
    @GeekGao GV, 不至于同时插 86 和 1 的实体卡
    GeekGao
        52
    GeekGao  
       2023-09-27 21:31:39 +08:00
    @shijingshijing 你的意思是: “淘宝 App 能通过联通 SDK 拿到 135****8888 这种形式的不完整本机号码的” 这个过程,APP 能从联通 SDK 读到这串数据是吗? 确定这不是 SDK UI 显示的数据吗?
    GeekGao
        53
    GeekGao  
       2023-09-27 21:32:37 +08:00
    @billlee 老师说, 你研究过移动一键登录 SDK 吗?研究一下看看你 APP 有没有这种能力吧
    codeMore
        54
    codeMore  
       2023-09-28 11:25:54 +08:00   ❤️ 1
    接过网易易盾一键登录 SDK 的服务端,我们拿不到类似 182****7897 这类信息,而且客户端给服务端的也是一个 token ,得去访问渠道服务端 api 才能完整拿到手机号。而这个 token 得用户同意才能拿到。所以本质上三方应用在用户未授权的时候是拿不到手机号信息的。
    Admin8012
        55
    Admin8012  
       2023-09-30 16:26:03 +08:00 via Android
    物理隔绝是最好的
    deep123
        56
    deep123  
       2023-10-12 19:21:33 +08:00
    这个一键登录的危害,我举个例子哈,如果你的手机丢了,被不怀好意的人捡到,然后别人就可以用你的手机卡一键登录很多 APP 从而获取你一些应用账户的信息或权限。
    maleclub
        57
    maleclub  
    OP
       2023-10-12 21:03:04 +08:00 via Android
    @deep123 也对,99%的朋友应该不会给 sim 卡上 PIN 锁,我之前锁过,不过坑了自己一次之后就没再上锁过。
    deep123
        58
    deep123  
       2023-10-13 11:14:49 +08:00
    找了天翼账号的客户问到了 https://e.189.cn/help/feedbackPage.do 给客服提供。
    ( 1 )、使用云盘账号本机致电客服热线( 4008281189 )
    ( 2 )、云盘账号最近 3 个月内 2 次充值记录(含号码、时间、金额)截图+身份证正反面照片
    ( 3 )、云盘账号手机营业厅(电信/移动/联通掌厅)首页或我的界面截图(含号码)+身份证正反面照片
    ( 4 )、云盘账号手机号的开户证明照片

    提供第三项和一二四项中的任选一项。
    maogang39
        59
    maogang39  
       2023-11-01 09:06:19 +08:00
    @deep123 是不是电信号才去找天翼的客服,移动号也要找天翼客服吗?
    疑惑第三项的 (电信/移动/联通掌厅)
    Jirajine
        60
    Jirajine  
       50 天前
    @GeekGao
    @codeMore

    手机号显示在 App 的 UI 里,那 App 的进程必然是已经拿到了的。不能硬要说 SDK 提供的库函数没有暴露出来就等于没拿到, 已经存在我自己进程的内存里面的数据,想拿到怎么都有办法拿到。
    GeekGao
        61
    GeekGao  
       49 天前
    @Jirajine 你实践后再说吧。 未确认前,数据流未必是完整的。运营商搞了很多年这个业务了,有明显的数据安全 bug ,那早就改了。
    Jirajine
        62
    Jirajine  
       49 天前 via Android
    @GeekGao #61 这个玩意说白了就是你的应用去请求运营商的接口,运营商接口返回当前使用流量的手机号。即使这个过程被运营商的 sdk 库封装了,技术上来说那也是你的应用进程拿到了,存在在你的应用进程之内。不说应用内展示的控件应用本身就可以完全控制,实在不行读屏 OCR 、/proc/self/mem 怎么都能拿到。
    GeekGao
        63
    GeekGao  
       48 天前
    @Jirajine 预取号是有掩码的,中间几位都是星号。你 OCR 也没啥意义哦。 用户确认取号后才会返回完整的号码,这个时候 sdk 已经通知你号码了,这时候你自己 hack 自己的进程没意义。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.