APP安全相关

密钥串、类名混淆

1)异或

#define XOR_KEY 0xFA
#define DataDecrypt(content, key) \
{ \
    unsigned char *p = content; \
    while( ((*p) ^=  key) != '\0')  p++; \
}

/* 本地数据加密串 */
#define kXorLocalKey ({ \
    unsigned char local_key[] = {(XOR_KEY ^ 'L'), (XOR_KEY ^ 'T'), (XOR_KEY ^ 'a'), \
        (XOR_KEY ^ 'b'), (XOR_KEY ^ 'c'), (XOR_KEY ^ 'd'), (XOR_KEY ^ 'e'), (XOR_KEY ^ '\0')}; \
    DataDecrypt(local_key, XOR_KEY); \
    unsigned char result[8]; \
    memcpy(result, local_key, 8); \
    [NSString stringWithFormat:@"%s", result]; \
})

2)对称加密

#define DataDecrypt(content) [MKCryptDES decryptWithContent:content]

#define kLocalSecretKey ({ \
    NSString *keyStr = @"JbLyWGbiDC/1FFT08EF9BtSed/D/6NPkbJVrv+KLSZbEg=="; \
    DataDecrypt(keyStr); \
})

3)类名/方法混淆

/* 类名混淆 */
#ifndef MKCryptDES
#define MKCryptDES MKDataCrypt
#endif

/* 方法名混淆 */
#define decryptWithContent signWithContent

- (void)demo {
    [MKCryptDES decryptWithContent:@"JbLyWGbiDC/6NPkbJVrv+KLSZbEg=="];
    // 静态分析:[MKDataCrypt signWithContent:]
}

 登录态cookie校验

  • 设置sessionId的有效期(可由后端实现自动延期)
  • 添加后端生成的tokenId(匹配sessionId与uid)
  • 通过Hash(签名规则+盐串)生成签名sign(本地盐串做混淆处理)
  • 使用Https单向认证加强请求的安全性

JWT身份验证机制

JWT(JSON Web Token):登录后返回acces_token、及refresh_token,请求携带access_token做验证身份,每次用access_token判断其是否过期,如果以过期失效,用refresh_token请求接口刷新access_token。

对称/非对称加密密钥长度

  • 3DES:16字节、24个字节
  • DES:8个字节(长度56位+8个校验位)
  • AES:16个字节、24个字节、32个字节
  • RSA:128个字节、256个字节

Hash算法

  • MD5:低安全性
  • SHA2:高安全性
  • SM3:高安全性

公钥、私钥、证书的关系

数字证书是经过CA认证过的公钥,包含有效期,认证机构等信息,公钥和私钥是相对的,一个加密一个解密,一个签名一个验签;

cer文件包含了数字签名信息和公钥,为二进制文件,pem为Base64文件,P12文件包含了cer文件(数字证书)和私钥,为Base64文件。

Charles实现浏览器Https抓包

  • 设置网页代理为本地IP地址,端口默认8888;
  • 浏览器输入chls.pro/ss下载并安装pem证书;
  • “钥匙串访”问双击Charles证书,设置为“始终信任”;
  • charles-SSL Proxying Settings-添加“域名:端口”;
  • charles-Proxy-macOS Proxy-开启HTTPS抓包;

备注:域名:端口-如(*.tencent.com、*:443、*.tencent.com:443)

Https防中间人攻击(charles、fiddler抓包)

以AFNetworking为例,实现bundle-cer数字证书校验

- (AFSecurityPolicy *)configSecurityPolicy:(NSString *)url {
    BOOL cerVerify = [url containsString:@"根域名"];
    if (cerVerify) {
        if (self.certifiPolicy.pinnedCertificates.count == 0) {
            return self.defaultPolicy;
        }
        return self.certifiPolicy;
    } else {
        return self.defaultPolicy;
    }
}

- (AFSecurityPolicy *)certifiPolicy {
    if (_certifiPolicy == nil) {
        _certifiPolicy =  [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
        [_certifiPolicy setAllowInvalidCertificates:NO];
        [_certifiPolicy setValidatesDomainName:YES];
        [_certifiPolicy setPinnedCertificates:[self configcertificates]];
    }
    return _defaultPolicy;
}

- (AFSecurityPolicy *)defaultPolicy {
    if (_defaultPolicy == nil) {
        _defaultPolicy = [AFSecurityPolicy defaultPolicy];
        [_defaultPolicy setAllowInvalidCertificates:YES];
        [_defaultPolicy setValidatesDomainName:NO];
    }
    return _defaultPolicy;
}

- (NSSet *)configcertificates {
    NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType:@"cer" inDirectory:@"."];
    
    NSMutableSet *certificates = [NSMutableSet setWithCapacity:[paths count]];
    for (NSString *path in paths) {
        NSData *certificateData = [NSData dataWithContentsOfFile:path];
        [certificates addObject:certificateData];
    }
    
    return certificates;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: App安全运维管理制度是指为了保障App在使用过程中的安全性和顺畅性,所制定的一系列管理规定和操作流程。该制度包含了以下几个方面: 1. 审查和授权:在App的开发、测试和发布阶段,需要进行严格的审查和授权。只有经过安全测试合格的App才能发布和使用。 2. 安全策略制定:制定明确的安全策略,包括用户身份验证、数据加密、访问控制等,以保证App安全性。 3. 安全监管控制:通过对App的使用情况进行监管和控制,确保其安全性。包括对用户行为的监控、异常行为的及时发现和处理,以及对安全事件的响应和处置。 4. 漏洞修复和更新:定期对App进行安全漏洞扫描和修复,及时更新最新的安全补丁,以防止黑客攻击。 5. 安全备份和恢复:建立完善的数据备份体系,确保App数据的安全性和可恢复性,以应对数据丢失或损坏的情况。 6. 培训和教育:定期组织安全培训和教育,提高员工的安全意识和技能,让他们能够正确使用App,避免造成安全风险。 7. 定期评估和改进:定期对App安全管理制度进行评估和改进,及时发现和解决存在的问题,以保障App的长期安全运营。 综上所述,App安全运维管理制度是为了确保App在使用过程中的安全性和可靠性而建立的一系列规定和流程,通过严格的审核和授权、制定安全策略、建立安全监管和控制机制、修复漏洞和备份数据、定期培训和评估改进等措施,保障App安全运营。 ### 回答2: App安全运维管理制度是指为了保障移动应用程序的安全性而制定的管理规范和措施。该制度包括以下几个方面的内容: 1. 安全策略与规划:制定明确的移动应用安全策略和规划,包括安全目标、安全管理的职责与权限、安全风险评估和处理等,确保整个安全运维工作的有序进行。 2. 安全开发与测试:制定规范的移动应用开发和测试流程,包括安全编码标准、代码审查、漏洞扫描和渗透测试等,确保应用程序在开发阶段就具备较高的安全性。 3. 安全监测与防护:建立实时监测机制,对移动应用的安全事件进行及时发现和响应;同时,配备防护设施如防火墙、入侵检测系统等,保障应用程序在运行时的安全。 4. 安全更新与修复:及时通知用户关于安全漏洞和补丁,以及相关更新措施;同时,负责应用程序的漏洞修复工作,确保应用程序始终处于安全的运行状态。 5. 安全审计与合规:定期对移动应用的安全运维工作进行审查和检验,确保其符合相关法规和规定,并对存在的问题进行整改和提升。 6. 应急响应与恢复:建立完善的应急响应机制,及时应对意外事件和安全威胁的发生,并进行相应的恢复工作,减少损失和影响。 通过制定和执行App安全运维管理制度,可以有效保障移动应用程序的安全性,防止信息泄露、恶意攻击等安全事件的发生,维护用户的隐私权益和数据安全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值