iOS开发--安全和App Transport Security

圣诞节的时候,巧哥直播了,这次直播给我们提供了很多信息,首先要注意的是两个要开源的事件,一个是腾讯,它将开源它自己的网络库。第二是DynamicCocoa将在1月份开源,这两件大事对我等iOS开发人员来说,简直不能太好~~

手机已经成为大家接入互联网的主要设备,然而移动场景下的安全问题更加复杂:Wi-Fi(定向攻击Wi-Fi),短信(钓鱼短信),电话(伪造电话),密码(单一密码),手机卡(使用伪造身份证补办手机卡获取验证码)等等。再加上互联网金融的爆发,人们习惯将自己的积蓄存放在网上,也加大了风险。现在我们来看下iOS是如何保障用户的信息不被轻易获取的。

一、来自平台的安全:

*芯片级的安全逻辑(Secure Boot)。

通俗一点就是,苹果会提供不可伪造的Public Key存放在应用处理器的启动芯片里,然后经过层层验证。设备的每次软件更新都需要苹果的独立认证。

*数据保护(Data Protection)

iOS系统上,用户数据不是简单的通过passcode加密的,而是把passcode作为种子,加上硬件信息共同生成的加密密钥,一旦超过10次失败,则会拒绝再次尝试。

*沙盒(Sandbox)

沙盒的作用就是将应用与数据隔离,如果应用想要获得系统权限,都需要经过用户同意。

*代码签名(Code Signing)

包括整个操作系统,以及所有应用,都在code signing的检查之下运行。

*Touch ID

Touch ID出现后,使用锁屏密码的比例由49%变成了89%,由于未经过上层操作系统,全在硬件上进行处理,所以指纹解锁是十分安全的。

二、来自软件升级的安全(Users Upgrading their Software)

鉴于苹果公司的霸道行为,强迫症患者往往会因为受不了应用图标右上角的红点以及每时每刻的系统提示,升级自己的系统,这其实是好的,避免漏洞风险。

三、来自开发者方面的安全(Developers Building Secure Apps)

*Touch ID 可被开发者使用

*App Transport Security

https就是我们常用的http加上Security,对于服务器端的开发来说,只需要购买SSL证书,配置Nginx。对于客户端来说,需要知道iOS9或Mac OS 10.10以上默认开启,使用TLS v1.2以上的安全协议,并且清楚针对例外方式在plist文件中的设置,是否允许任意的加载,是否允许任意的media加载,是否允许任意的web加载,是否允许本地网络以及异常域名。

异常域名的几个属性:

*NSIncludesSubdomains: 是否对子域名生效

*NSExceptionAllowsInsecureHTTPLoads: 是否允许加载HTTP的内容

*NSExceptionMinimumTLSVersion: 最低的TLS版本

*NSExceptionRequiresForwardSecrecy: 是否要求保持完全前向保密

*NSRequiresCertificateTransparency: 是否要求证书透明性

你可能感兴趣的:(iOS开发--安全和App Transport Security)