南通iOS开发培训基础课程教学
科迅教育
发表于:2020-04-15 11:32:49 93次浏览南通iOS开发培训基础课程教学 为了保护用户数据,需要考虑两个方面:(1)使用正确的数据存储解决方案;(2)在输入数据时保护数据。钥匙串(Keychain)是苹果公司开发的密码管理系统,存在于苹果公司的macOS电脑操作系统和iOS移动操作系统。苹果公司严格规定不允许在不同iOS应用程序之间共享钥匙串项目,这意味着iOS 钥匙串项目只能由创建它们的应用程序访问。因此在iOS开发者在开发应用時候,用户的登录、密钥和密码应存储在钥匙串中。
核心数据(Core Data)是苹果公司为开发者的提供的持久性数据库开发接口框架,具有基础SQLite数据库的功能。有些开发者会将用户的敏感数据存放在核心数据,这是很危险的,因为默认情况下,当应用程序解锁时SQLite不会加密。苹果公司提供的“数据保护”的功能仅仅在设备被密码锁定时候,它才会对沙箱进行加密。
另一方面要保护用户的输入。如果用户使用简体中文输入法键盘,输入英文字符和数字字符的用户名和密码时,会自动启动系统输入法自动更正提示,然后用户的输入记录会被以明文的形式缓存下来,其他应用可以很方便读取从手机相关目录,获得字符串输入记录[7],开发者应注意关闭自动更正,屏幕截图存在类似的情况,当应用程序进入后台时,系统会截取屏幕截图。如果用户输入敏感数据并且在屏幕上可见,需要在应用程序进入后台之前实现屏蔽屏幕的机制。
苹果公司采用了App Transport Security迫使开发人员必须使用SSL(Secure Socket Layer)。SSL虽让相对安全,但是通过ARP缓存投(cache poisoning) 或者DNS污染的方法也可以实现中间人攻击[8]。移动用户每天都会接触到很多不安全的无线网络,SSL锁定确保应用程序仅与的服务器本身通信。SSL锁定的先决条件之一是在应用程序包中保存目标的服务器的SSL证书[9]。应用程序在配置SSL锁定会话时可以用两种方式:利用苹果提供的网络访问接口NSURLSession、第三方库AlamoFire或者AFNetworking。
使用NSURLSession锁定SSL有点麻烦,开发者没有办法把已经锁定的证书放到一个数组中以便于读写操作,也不能自动终止与本地证书不匹配的响应,而且,需要手动地检查每一个由NSURLSession建立的SSL锁定。多数开发者目前会使用前面提到的两个库,它们已经封装了很多功能,使用更为简单方便。以使用AlamoFire库为例,先创建一个将域名映射到ServerTrustPolicy实例,用这个实例初始化一个ServerTrustPolicyManager对象,由这个对象创建SSL锁定的管理者(Manager)实例,最后调用ServerTrustPolicy.certificatesInBundle()一个方法就可以返回所有的证书。
防止逆向工程一个方法就是尽量采用Swift语言开发应用程序。 Swift是一种比Objective-C更新的语言[10],因此逆向工程工具的做得不是很好。还应该使用安全的方法来存储特定环境的应用程序密钥,比如使用Cocoapods密钥。其他的方法包括使用代码混淆、代码反调试技术、误导性方法名称、为攻击者创建陷阱和伪造方法等等。這种方法是一把双刃剑:迷惑了敌人的同时,使得自己的代码更难维护,开发更慢,更容易出错。
南通iOS开发培训基础课程教学 在iOS应用发布到苹果应用商店之前,必须对应用进行安全审核。并不一定非得花大量资金聘请外部黑客团队做攻防测试。开发者在开发过程中重视上述三个常见的“坑”,可以大大减少用户敏感数据泄露的风险。
南通iOS开发培训基础课程教学原创内容,请点击 南通iphone开发培训
热门课程
-
南通Java培训-科迅教育
询价
-
南通JAVA培训班型
询价
-
南通java培训班
询价
-
南通java培训课程培训
询价
-
南通java培训中心_南通科迅教育java培训
询价