iOS APP 本地数据存储和缓存

来源:互联网 发布:即时通讯软件下载 编辑:程序博客网 时间:2024/05/18 00:12

一 、数据存储方式

      1. 使用NSUserDefaults 
      2. 写本地文件的方式
      3. 存本地数据库
      4. 使用keychain 进行数据存储

二、存储的安全分析

     1. NSUserDefaults 

          iOS系统提供的一种保存信息和属性的非常普通的方法,NSUserdefaults 的本质就是把数据存储在本地沙河目录的Library 目录下的Preferences 目录下bundleID. plist命名的文件中,当应用删除时,沙河目录下的数据

       一块跟着删除 ,对于应用中和应用安装相关的数据,可以存储在这里, 对于一般未越狱的程序,该数据是安全的,当越狱之后的手机,则数据就不安全啦

     2. 写本地文件的方式

          iOS 沙河目录包括: tmp , Document ,Library  ,Caches四个目录

         在iOS手机中,系统是基于unix 系统的移植版,系统目录自然也和unix 的系统目录类似,在一般未越狱的手机中,由于系统权限的设置,应用一般只能操作本应用沙河目录下的文件

         未越狱的手机,正常情况下用户是无法访问沙河目录的,但是在开发时在info.plist 文件中设置Application supports iTunes file sharing 设置为YES,用户使用手机连接iTunes 时,是可以访问Document目录下的文件的,

          建议一般数据写文件存储在Library  目录下   

     3. 存本地数据库

          写本地数据库,同样也是存储在沙河目录下,对于已经越狱的手机,当数据库的数据为明文时,是有可能被盗取的 ,对于数据库存储

     4. 使用keychain 进行密码等关键信息的存储

        官方文档地址:https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html

       优点:  1).  通过开发者证书签名将数据加密后存储在手机系统上本地的FTP服务的 sqlite 数据库,保证数据的安全存储 ,独立于当前的应用

                    2) . 当你删除APP后Keychain存储的数据不会删除,所以在重装App后,Keychain里的数据还能使用

三、风险的规避方案

        在本地存储的数据,防止被第三方盗取:

     1. 一般不涉及客户隐私和密码的数据,在本地使用NSUserDefaults 进行存储,当牵扯到用户隐私和密码的数据时,建议在存储前使用一定的算法进行加密,在使用时,同样适用相应的算法进行解密
     2.涉及用户隐私和密码的数据建议使用keychain 进行本地的数据存储
     3. 本地避免敏感数据的存储
     4. 在app每一次和服务器进行数据的交互的时候,涉及到敏感数据的时候,客户端和服务器数据通讯时进行RSA+MD5  的加解密,防止第三方的破解

四、 系统的本地数据缓存

     使用AFNetworking 、 SDWebImage 等等开源库做网络数据缓存的时候要注意可能会出现重复缓存(因为NSURLCache已经做了一次缓存,存在Disk中 !


  1. 使用 NSURLConnect、NSURLSession、UIWebView  的都会使用导 NSURLCache 的缓存


   2. 当使用 NSURL 相关的框架,使用到缓存的时候,系统会在 Caches目录下创建一个 跟 bundle identifer 同名的一个文件夹,以及里面的 Cache.db、Cache.db-shm、Cache.db-wal

三个文件和文件夹 fsCacheData/

   ·fsCacheData/ 文件夹会在有需要缓存数据到文件的数据才会有,如缓存图片


3. 可以使用 [[NSURLCache sharedURLCache]removeAllCachedResponses] 清理这里所有的缓存数据。




0 0
原创粉丝点击