uniapp项目,打包ios应用,但是安全检测存在下面漏洞,需要如何修复

- 发布:2025-03-20 13:57
- 更新:2025-03-24 14:48
- 阅读:58

o***@sina.cn (作者)
开发者自查:
1)增加程序检测防止二次签名,定义变量保存embedded.mobileprovisivision中hash值,在应用启动后比较bundleIDPrefix返回值与hash是否相同,示例代码如下:
-(NSString )bundleIDPrefix
{
static NSStringbuPreStr=nil;
if (buPreStr.length==0) {
@try
{
NSDictionary query = [NSDictionary dictionaryWithObjectsAndKeys: (id)kSecClassGenericPassword, kSecClass, @"bundleIDPrefix", kSecAttrAccount, @"", kSecAttrService, (id)kCFBooleanTrue, kSecReturnAttributes, nil];
CFDictionaryRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef )&result);
if (status == errSecItemNotFound)
status = SecItemAdd((bridge CFDictionaryRef)query, (CFTypeRef )&result);
if (status != errSecSuccess)
return nil;
NSString accessGroup = [(bridge NSDictionary )result objectForKey:(id)kSecAttrAccessGroup];
NSLog(@"accessGroup:%@",accessGroup);
NSArray components = [accessGroup componentsSeparatedByString:@"."];
buPreStr = [[components objectEnumerator] nextObject];
CFRelease(result);
}
@catch(NSException *ex)
{
}
}
return buPreStr;
}
2)方法(1)在上线后,经过app Store处理,会存在无法获取bundleID的情况,建议配合iOS加固,以便更准确的获取bundleID,避免应用被篡改及二次打包的风险
这是报告中提供的解决方案
-
可以参考客户端安全检测API:plus.navigator.getSignature来实现类似的逻辑,其原理是检测bundleID是否变更。如果检测机构要求是原生代码存在相关的逻辑, 建议开发 uni原生语言插件 或 uts插件 来实现。
2025-03-24 16:12
o***@sina.cn (作者)
有3个app进行了检测, 其他两个是原生开发的, 同样的规则下面没有检测出来此漏洞, uniapp开发的这个里面检测不来了,想问下有没有解决方案
2025-03-24 14:58