我的 iPhone 昨天返厂了,今天要转钱于是就用 iPad 下载了一个 中国建设银行 app 。结果转账时发现被限额 5000,原因是还有一台设备 《曾经登录》 过 app 。要我必须去之前的设备解绑也好授权也好,能把 iPad 的权限提升成 “强绑定设备” 操作才能不受限。
我的情况是这样的,像这类银行 app 从来都是,用时即下用完即删的状态,所以其实我的 iPhone 里其实也没有 中国建设银行 app,加上昨天返厂时已经抹掉过 iPhone 。如果建行没有本事识别出抹掉过的 iPhone,那这个功能不就纯粹恶心用户?他既然敢做成这样,是不是说明其实 app 已经掌握了一套哪怕 iOS 提供假的 mac 地址、哪怕 iOS 不提供 imei 、哪怕抹掉后重置用户标识的情况下,还是有办法获取到你的手段?
1
Aceycli 2021-10-16 10:26:44 +08:00
这个,只需要判断你两台设备不是同一台就行了吧。
|
2
MengiNo OP @Aceycli 我的意思就是主要他怎么判断是一台呢,单纯看型号? 以前可以看 iemi 现在不让看了,后来可以看 mac 地址,现在 iOS 可以针对不同 ssid 给一个虚拟 mac 地址,用户唯一标识也可以重置,拿他总得有个东西可以确认这样是独一无二的吧。
|
3
DSKcpp 2021-10-16 10:33:44 +08:00
APP 生成一个超长“绝对”不会重复的 ID 存起来不就行了。
|
4
0TSH60F7J2rVkg8t 2021-10-16 10:34:27 +08:00
理论上是拿不到 imei 的,但是实现相应的功能有其它办法。比如,记录下你的手机型号等在抹掉之前都不会变的信息,然后由服务器发一段特殊的编码(如 cookie,签名的 authentication code 等),然后存到 keychain 里,这样即使你删掉 app,重装后,在同一台设备下的 keychain 是可以重复读取并验证机器唯一性的。抹掉后肯定就做不到了。除非楼主可以重现抹掉后,重装 app 还能识别为同一台,那才可以说,app 绕过了限制拿到了某种硬件唯一标识符了。
|
6
nsynet57 2021-10-16 10:38:46 +08:00 via Android
安卓上是"读取本机识别码"权限可以关闭,但是有些 APP 可能无法使用。
建行 APP 是这样子的 |
7
MengiNo OP |
8
just1 2021-10-16 11:00:48 +08:00
作为一个银行应用,如果认为抹掉的手机是安全的,这才是问题吧
|
9
MengiNo OP @ahhui 这种通过 keychain 恶心人的手法我是知道的(所以我直接关了 keychain iCloud 同步),而且绝大多数普通用户可能只有 iOS,可能一辈子都不会开 甚至都不知道 这个 keychain 功能,这种手法感觉不太稳定。
|
10
MengiNo OP @just1 问题是这个逻辑不需要抹掉,只需要重置用户标识。难道重置用户标识就是不安全的?那也起码标注一下你重置了这个我们就跟踪不到你了,为了保证安全你不要随便重置。 这种 既隐私换便利 之后的 隐私换安全 论调我其实有点接受不了,何况其他银行或者银保监会都没有类似的手段、标准或者要求。
|
11
0TSH60F7J2rVkg8t 2021-10-16 11:24:29 +08:00 2
@MengiNo 同步只是同步,keychain 在本机是一直可以用的,里面可以存储登录 token,方便卸载 app 后,重装不需要再次登录(实际上逻辑和验证手机唯一性差不多,很多 app 都在用这个验证手机唯一性)。即使你不同步,这个 keychain 还是可以被 app 使用。
|
12
cpstar 2021-10-16 11:28:46 +08:00
即便是 Android 给了识别本机的权限,重刷安装系统之后(等同于 iOS 抹掉)获取的识别码也是不一样的。iOS 更应该是这样了。机器 SN 这种东西,除了系统,一般 APP 通过系统调用,是无法获取的吧。
这个唯一码是混合了用户标识和机器表示的。 显然同一个 APP,在重刷前后,会识别为两个设备。如果不重刷系统,那 APP 再次安装之后获取的机器码肯定还是卸载之前那个——系统没有变化。换句话讲,如果在一台新设备上,能够模拟原设备的机器码,APP 是无法知道设备发生了变化的。 至于安全问题,主要是给用户提供一个安全保护,让用户知道有哪些设备使用过相应服务,并且让用户对该设备更加信任,而且也让用户能够删除某个信任设备。 |
13
Rocketer 2021-10-16 11:29:20 +08:00 via iPhone
实测旧手机迁移到新手机会把建行 app 的绑定带过去,直接就是完整权限。所以它肯定没读到什么唯一码。
|
14
ckaock 2021-10-16 11:35:44 +08:00
我也有类似问题,忘记怎么弄好了,问问客服
|
15
Xushet 2021-10-16 11:40:59 +08:00 via Android
设备序列号?
|
16
vocaloidchina 2021-10-16 12:32:43 +08:00 via iPhone
我隐约记得 ios 追踪里面的条款是有说会对银行 app 稍微放宽限制的
|
17
MengiNo OP @ckaock 客服说只能去门店,而且省会级别的城市,我在的区只有一个建行周六有上班。他说如果你实在急就绑定第三方,绑支付宝可以转 5k,微信可以转 5k,云闪付可以转 1w,量不大的话什么 jd,美团啥的都可以绑都可以转。我真是人傻了……
|
19
dingwen07 2021-10-16 13:45:20 +08:00 via iPhone
Keychain 可能是祖传问题了,苹果之前有一次尝试过在应用卸载同时删除对应 Keychain,但最后没有上线这个功能。
|
20
EIJAM 2021-10-16 13:50:28 +08:00 via iPhone
建行是这样,其他银行没有限制这么多。
|
21
llopppp 2021-10-16 15:34:00 +08:00
设备指纹这个说法是存在的,只不过看是否要搭建环境。
前两天我云闪付 app 直接用的数据迁移,在新手机上直接打开 app,提示登陆状态失效,同时原手机登陆状态也失效了。。提示的就是设备指纹变化。 |
22
Maskeney 2021-10-16 20:02:56 +08:00
针对标题:IMEI 基本获取不到,但是唯一识别号很容易获取尤其是国产机,iPhone 也不例外甚至还有通过钥匙串持久化的
针对内容:建行这个你纯粹是想多了,根本不需要关联设备的唯一识别号,只需要强认证后保存一个 token 即可,即使你同一台设备卸载重装也是会告诉你当前设备是新设备的,不要把它想得太复杂,尤其是电子银行下水道的建行 |
23
icyalala 2021-10-16 20:16:26 +08:00
如果删除 App 要清空 keychain,那 keychain 就完全没必要存在了,所以说那是 beta 版的 bug 。
苹果需要做的是在 iOS 下提供像 Mac 那样的系统级 Keychain 查看工具。 @dingwen07 |
24
dingwen07 2021-10-16 23:09:02 +08:00 via iPhone
@icyalala #23
https://developer.apple.com/forums/thread/22874?answerId=75464022#75464022 > Indeed. This behaviour is more of an artefact of the implementation rather than a designed-in feature. 我并不那样认为 |
26
huxiaofan1223 2021-10-17 00:59:15 +08:00 via iPhone
老哥我比你还惨,ios15 降级到 14.8,我也被限额了,还得去线下解锁
|
27
huxiaofan1223 2021-10-17 01:03:28 +08:00 via iPhone
@just1 可以增加验证方式吧,比如人脸识别,输入某张卡的银行卡密码,手机短信验证,我手机降级之后也被限额了,可他就是要你去线下,你说气不气?
|
28
huxiaofan1223 2021-10-17 01:05:57 +08:00 via iPhone
@Rocketer 那可能是缓存起来的数据了
|
29
MengiNo OP @huxiaofan1223 我今天去线下,结果明明只是一个 app 的功能,结果有身份证没带卡还不行。完了我说拿挂失补一张卡出来总可以吧,他说新补的卡限额 1w,我说那 1w 也不成啊,他说那总比你现在 5000 好吧,不要的话只能回去拿卡。问就是风控、安全。讲真论银行这块真就汇丰这种资本主义性质的银行玩得明白,看钱不就完事了讲那么多,卡里就两块钱爱干嘛干嘛,搞这么复杂你等下自己把自己锁了,他们还得倒贴一个人的工时给你做这些有的没的手续。
|
30
daviddeng 2021-10-17 01:30:13 +08:00
@MengiNo 对于银行来说通过银保监会的安全审查最重要,考虑到大多数人群有关网络的认识我认为银行的做法是正确的,即银行是为纯粹的小白提供安全的金融服务而不是某些对网络有一定了解的人群,此外,银行不需要追踪设备,银行只需要确认这台设备“不是”之前那台设备就可以了,所以它可以直接读取用户标识就可以了,一旦标识改变就认为这是一台新设备
|
31
WebKit 2021-10-17 01:39:47 +08:00 via Android
现在除了系统以外,无论是 iphone 还是 android 都获取不到手机的硬件 id 的(imei mac 等等)
|
33
ruri 2021-10-17 08:29:33 +08:00 1
楼主可能还不是很懂现在的用户跟踪技术,以前软件喜欢拿 IMEI 数据是因为这玩意儿和硬件绑定,基本上不可能变动(除非换 SoC 了,因为 IMEI 存储在基带里面)。但现在软件并不需要拿到 IMEI 也能跟踪用户,我举几个常见的例子:
通过设备 ID 来判断设备是否为同一个,不过有些操作系统给软件的设备 ID 是虚拟的,并不是用物理硬件生成的 ID 。 通过在存储设备里生成一个 token 来判断设备是否为同一个,Android 软件在 /sdcard 里到处拉屎就是为了实现这个方案。 第二种跟踪方案目前在 Android 端除了通过 su 权限执行 mount --bind 以外(现成的轮子有“存储空间隔离”APP 和其它一些 Magisk 模块),没有任何办法避免,即使是 Android 11 + target 30 以后。因为 APP 在媒体目录里面依旧可以随便读写(例如 pilipili )。 |
34
RightHand 2021-10-17 08:29:40 +08:00 via Android
运营商 app,权限很高,并且国内有一键通讯 sdk 。正常需要授权,银行嘛,不知道
|
35
ruri 2021-10-17 08:34:32 +08:00
第三种方法就是通过网络的一些信息来识别,例如 WIFI 的 SSID 和 WIFI 的位置信息。还有移动网络也能获取手机号码: https://www.v2ex.com/t/498548#r_6314563
跟踪用户的技术多种多样,这就是为什么谷歌敢取消 cookie 的原因,因为它有更好的跟踪办法了,取消 cookie 可以打压友商竞品。 |
36
fan123199 2021-10-17 09:18:40 +08:00
,Android 现在没必要去获取 imei 号,获取 Android id 就行,这个是个不需要权限的 id,是跟着系统+app 走(每个 app 互相不一样),但是对于同个 app,是一致的,所以可以判断。iOS 应该是用 idfa 。 另外,这个判断逻辑是没有问题的,银行欺诈比你想象的多,风控也做了很多。问题在于后续的处理。一般其他银行是不用去线下的,这个线下就完成放弃了用户体验,只为了风控。
|
37
0TSH60F7J2rVkg8t 2021-10-17 09:59:01 +08:00
@snorlax 从目前掌握的信息看,还没有清空和禁用的方法。楼上有人提到曾经苹果想在卸载 app 的时候删除 keychain 里的数据,但是最终没上线,估计是因为这样造成的问题会更多吧。
|
38
longxk 2021-10-17 13:21:07 +08:00
谷歌现在限制了设备唯一标识的获取,但是国内 OV 华米等厂商为了广告收入又提供了 OAID,基本等于设备唯一标识
|
39
huxiaofan1223 2021-10-17 13:33:43 +08:00 via iPhone
@MengiNo 还好我没去,我也不打算去了,以后尽量不用建行卡了吧
|
40
icyalala 2021-10-17 13:35:14 +08:00
@dingwen07 看来我想错了。。
根据那个苹果工程师的其他回答,确实是因为隐私问题想要改掉 keychain,但是因为有兼容问题所以又改回来了。 |
41
jim9606 2021-10-18 03:52:36 +08:00
ios 应该是不能获得 imei 在内的永久设备标识符的。
正因为不能跟踪,所以你才会被限额,这里跟踪是提升安全信度的。 这种情况有些风控会设计冷却机制,旧设备长期不使用会被降权,新设备保持活跃会获得提权机会。在这种评价机制下楼主这种用完即删的策略很难获得提权。 |
42
FlyingShark 2021-10-18 11:08:26 +08:00
说个和楼主无关的,移动 UAID,你猜猜有多少 app 正在用
http://dev.10086.cn/docInside?contentId=11030372569757 |