《高性能iOS应用开发》安全

2018-03-14  本文已影响25人  Yasic

任何附加的安全层都会导致应用变慢,需要权衡。

应用访问

匿名访问

这里涉及到如何为设备创建唯一的标识符。

目前主要有两个,IDFV 和 IDFA。

IDFV 是设备上每个应用的唯一持久标识符,其中 Vendor 就是应用开发商,对于 iOS7 以后的新版本,这个值通过 bundleId 除去最后一部分的剩下部分来生成。可以用两种方式来保留唯一的设备 ID,其一是将 bundleId 除最后一部分保持唯一,其二是通过共享钥匙串来共享密钥。IDFV 是一种应用加设备绑定产生的标识符,如果用户将属于此 Vender 的所有 App 卸载,则 IDFV 的值会被重置,再重装此 Vender 的 App 时,IDFV 的值和之前也不同。

IDFV 的获取方式如下

    UIDevice *device = [UIDevice currentDevice];
    NSUUID *rv = device.identifierForVendor;
    if (rv) {
        NSLog(rv.UUIDString);
    }

如果用户在设备重启后没有解锁,而应用已经在后台执行任务期间或在推送时被唤醒了,则可能获取到的 IDFV 是 nil。

可以理解为广告标识符,在同一个设备上的所有 App 都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的。广告标示符是由系统存储着的。这个值并不唯一,用户可以在设置/隐私/广告中还原或禁止广告跟踪,在 iOS10 以后的设备如果选择禁止广告跟踪,则 IDFA 就会变成00000000-0000-0000-0000-000000000000。因此它的获取方式如下

#import <AdSupport/AdSupport.h>

    ASIdentifierManager *mgr = [ASIdentifierManager sharedManager];
    if (mgr.isAdvertisingTrackingEnabled) {
        NSUUID *rv = mgr.advertisingIdentifier;
        NSLog(rv.UUIDString);
    }

认证访问

大多数 app 采取自定义认证机制,需要注意

验证码的原名为CAPTCHA,是一大串英文的缩写:Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分电脑和人类的图灵测试。它的目的在于区分人眼与电脑程式,产生只有人类才能辨别的文字,以避免恶意程式攻击或垃圾留言。

网络安全

一些建议:


上一篇 下一篇

猜你喜欢

热点阅读