1、隐私的问题
先说UUID,一直都在说,不要使用UUID在程序里面用来实现认证等功能。UUID也带来了很多隐私问题。
每个iphone都有一个唯一的标示 UDID. 号称不可改变,但在越狱终端上有UDID Faker之类的软件给您提供高级假冒服务(可以为每一个应用分配不同的UDID)。
UDID怎么算出来的?
UDID = SHA1(Serial Number + ECID + LOWERCASE (WiFi Address) + LOWERCASE(Bluetooth Address))
UDID原来是放开的,大家随便调用。
NSString *uniqueIdentifier = [device uniqueIdentifier]
但隐私问题出来,UDID唯一表示一个终端,那就差不多标示一个人了!如果配合其他的信息如位置等,就可以跟踪楼主了!开发个软件,可以监控女神的每时每刻的位置,位置不差1米。研究表明, 68%的应用悄悄的上传 UDIDs 。再配合一些社交网络里面的信息,就可以定位楼主了。
鉴于此, 苹果已正式宣布,不再接受访问iOS设备UDID的应用申请或应用更新。苹果建议开发者转用由iOS 6提供的Vender和Advertising Identifier系统,允许开发者访问。详情参考UIDevice Class Reference。
苹果也建议生成一个随机数。。。
-(NSString*) uuid {
CFUUIDRef puuid = CFUUIDCreate( nil );
CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
NSString * result = (NSString *)CFStringCreateCopy( NULL, uuidString);
CFRelease(puuid);
CFRelease(uuidString);
return [result autorelease];
}
该方法每次都会获取一个唯一的标识字符串,开发者可以在应用第一次启动时候调用一次,然后将该串存储起来,以便以后替代UDID来使用.但这就不能标示终端了。
2、本地数据安全的问题
1)备份
itune备份到电脑了,电脑病毒可以窃取。
2)丢了手机
尤其不设置pin码的,拿数据的安全就。。
3)恶意软件
这个ios平台真的比较少,但也不能说没有。
ios的应用也是沙箱机制,很强大哦,前面的一篇文章介绍过。ios和android的沙箱不一样,android是每个进程一个UID,ios的应用都是一个用户mobile。
用户装完应用目录在:/var/mobile/Applications
- Plist files
Add ‘EnableFirebreak’ key to the com.apple.mobileslideshow.plist
> Plutil –key EnableFirebreak –value yes com.apple.mobileslideshow.plist
|
- Keychain
ios安全团队对ios安全的认识http://blog.csdn.net/u011069813/article/details/9256233
Keychain首先是个Sqlite 数据库,里面存储一些小数据,比如认证等信息( usernames, passwords, encryption keys, certificates and private keys)。应用使用keychain service library/API (secItemAdd, secItemDelete,secItemCopyMatching & secItemUpdate methods) 来访问keychain. keychain Sqlite database的位置: /private/var/Keychains/keychain-2.db.
- Application’s home directory
- Cache
- Logs
待续。。。。