如何使用ATS提高应用的安全性

App Transport Security,简短的说就是ATS,是iOS9和OS X El Capitan的一个新特性。App Transport Security 的目标是提高Apple 操作系统的安全性以及在此操作系统上运行的任何应用的安全性。

基于HTTP传输数据的网络请求都是明文。开启App Transport Security后,网络传输自动通过HTTPS传输而不是HTTP。

App Transport Security要求TLS (Transport Layer Security) 1.2或者更高。

关于App Transport Security,每个应用都属于4个大类当中的一类。

只有HTTPS

如果你的应用只基于支持HTTPS的服务器,那么你太幸运了。你的应用不需要做任何改变。但是,注意App Transport Security要求TLS 1.2而且它要求站点使用支持forward secrecy协议的密码。证书也要求是符合ATS规格的。因此慎重检查与你的应用交互的服务器是不是符合ATS的要求非常重要。

混合

你的应用与一个不符合ATS要求的服务器工作是很有可能的。在这种情况下,你需要告诉操作系统哪些站点是涉及到的然后在你的应用的 Info.plist文件中指明哪些要求没有达到。

这意味着对于每个与你应用交互的站点, 除了在你的应用的 Info.plist中声明的那些以外不强制要求App Transport Security,其它的都需要。你可以使用很多的预定义的keys值来配置例外(exceptions)。在下面的 Info.plist文件中,我们定义了3个例外。

api.insecuredomain.com

我们定义的第一个例外告诉ATS当与这个子域交互的时候撤销了必须使用HTTPS的要求。注意这个仅仅针对在例外中声明了的子域。非常重要的一点是要理解NSExceptionAllowsInsecureHTTPLoads关键字并不仅仅只是与使用HTTPS相关。这个例外指明了对于那个域名,所有的App Transport Security的要求都被撤销了。

cdn.domain.com

很可能你的应用是与一个支持HTTPS传输数据的服务器交互,但是并没有使用TLS 1.2或更高。在这种情况下,你定义一个例外,它指明应该使用的最小的TLS的版本。这比完全撤销那个域名的App Transport Security要更好更安全。

thatotherdomain.com

NSIncludesSubdomains关键字告诉 App Transport Security这个例外适用于这个特定域名的所有子域。这个例外还进一步通过扩展可接受的密码列表来定义这个域名可以使用不支持forward secrecy(NSExceptionRequiresForwardSecrecy) ?协议的密码。想了解更多关于forward secrecy的信息,我推荐你去看这个文章?Apple‘s technote

撤销

如果你在创建一个网页浏览器,那么你有一个更大的麻烦。因为你不可能知道你的用户将要访问那个网页,你不可能指明这些网页是否支持ATS要求且在HTTPS上传输。在这种情况下,除了全部撤销 App Transport Security 没有其它办法。

非常重要的是你要明确的指明撤销 App Transport Security。牢记App Transport Security是默认强制执行的。在你的应用的Info.plist, 文件中,为NSAppTransportSecurity关键值添加一个字典。这个字典应该包括一个关键字,NSAllowsArbitraryLoads,以及它的值要被设置为YES。如果你撤消了App Transport Security,下面内容就是你的应用的 Info.plist 文件应该看起来像的东西:

有着例外的撤销

第四个大类是当你的应用撤消了App Transport Security,,但同时定义了一些例外。这非常有用就是当你的应用从很多的服务器上取数据,但是也要与一个你可控的API交互。在这种情况下,在应用的Info.plist文件中指定任何加载都是被允许的,但是你也指定了一个或多个例外来表明哪些是必须要求 App Transport Security的。下面是Info.plist文件应该会有的内容:

 

时间: 2024-10-05 04:27:25

如何使用ATS提高应用的安全性的相关文章

[译]在Linux上的提高MySQL/MariaDB安全性的12条建议

MySQL 是世界上最流行的开源数据库系统,而MariaDB(MySQL的一个分支)是世界上发展最快的开源数据库系统.安装MySQL服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任务之一. 这将有助于加强和提升整体Linux服务器安全性,因为攻击者总是扫描系统任何部分的漏洞,而数据库过去一直是关键的目标.一个常见的例子是暴力破解MySQL数据库的root密码. 在本指南中,将讲解在 Linux 很有用的 MySQL / MariaDB 安全性最佳实践. MySQL 安全性安装

提高系统性能和安全性

using 定义:using可以用于导入命名空间,也可以释放对象占用的内存资源. 语法: using(SqlConnection conn = new SqlConnection(connString)) { //数据库操作代码 } using语句允许用户定义一个范围,并且总是在范围末尾处释放对象. 即使using范围内出现异常也会释放对象. 注意事项: 1.using可以主动释放的对象都需要事项IDisable接口. 2.并不是所有的代码需要使用using,只需要对那些对系统性能有重要影响的对

如何提高Android设备安全性?5个窍门赶紧get吧!

目前在市场上,Android设备的数量是非常惊人的.2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一. 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%.2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台. 那么该如何保护Android设备的安全呢?今天小编将跟大家分享5个保护你Android设备不受入侵者攻击的窍门,欢迎大家品鉴! 1. 应用程序的可信度和权限 当你使用

如何提高系统接口安全性

本人作为一名Java开发者,在工作中时常遇到需要从其它系统拉取数据,那么就需要跟其它系统的同学沟通为我们开放接口,对方会发送一些AppId和AppKey之类的数据,在我们请求接口的时候,需要把这些值和参数等信息一起生成摘要发送过去:最近项目又因其它原因,需要开放外网,于是安全部对系统一顿扫描,提出各类安全要求,本人也将近期的收获分享给大家 1. XSS防护 1)XSS原理XSS是最常见的功能类型,其原理就是在WEB页面中嵌入恶意脚本程序,当用户在打开页面的时候,恶意的脚本程序就会在客户端的浏览器

服务器Linux文件系统的安全性如何提高?

1.锁定系统重要文件 系 统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了. 在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2.ext3.ext4 文件系统下文件属性,但是这个命令必须有超级用户root来执行.和这个命令对应的命令是lsattr,这个命令用来查询文件属性. 通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性,下面简单介绍下 chattr和lsattr 两个命令的用法.

Linux 中提高的 SSH 的安全性

SSH 是远程登录 Linux 服务器的最常见的方式.且 SSH 登录的时候要验证的,相对来讲会比较安全.那只是相对,下面会介绍一些方式提高 SSH 的安全性 SSH 的验证 而SSH 登录时有两种验证方式 1. 密码认证,要求用户每次登录服务器的时候都要输入密码 2. 密钥认证,客户端的公钥先保存在服务器的.ssh/authorized_keys中,登录时使用该公钥自动验证,认证成功就不用输入密码都能登录 密码认证的问题 密码简单容易被人攻破, 密码复杂难记,又比较容易输错. 容易被人用暴力破

iOS 9:ATS

苹果公司对安全上的重视无可厚非,今年的WWDC大会上,Apple明确表示以身作则,通过一个新特性来提高系统的安全性,他就是App Transport Security. 1.什么是App Transport Security. App Transport Security,简称ATS,是iOS9的一个新特性.尽管Apple没有提到watchOS,我相信App Transport Security 一定也适用于watchOS2.App Transport Security 的目标是提高Apple

关于密码的安全性问题

最近看到网上有很多知名企业网站都爆出密码泄露的问题,然后我们现在做一些关于注册和登录还有其他方方面面涉及数据库资料的内容. 如果我们一般做注册页面,将用户注册的密码存进数据库,一般建议不要单纯的将密码存进去,因为这样安全性绝对是最低的,如果不想让别人简简单单就拿到我们密码的话,那就得在密码上面做点小功夫,例如我们最常见的就是MD5的加密,因为MD5是不可逆的,这时候可能会有很多人说,我们上网有很多MD5解密的网站,把密码扔进去不就好了吗? 雖然网站上面MD5解密的解密查询数据的记录惊人,但是如果

将Web应用性能提高十倍的10条建议

导读 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网上产生的(数据参见下面的资料).这个时刻在线的超连接世界意味着用户对其的期望值也处于历史上的最高点.如果你的网站不能及时的响应,或者你的 app 不能无延时的工作,用户会很快的投奔到你的竞争对手那里. 举一个例子,一份亚马逊十年前做过的研究可以证明,甚至在那个时候,网页加载时间每减少100毫秒,收入就会增加1%.另一个最近的研究特别强调一个事实,即超过一半的网站拥有者在调查中承认它