iOS9之后我們需要關注的事情
2016-01-19 21:57:43 來源: mengyidan1988 評論:0 點擊:
應用隱私控制-外部調用 iOS9增加了隱私控制,自己的應用如果需要調用其它應用,需要在工程的info plist中添加一個key為LSApplicationQueriesSchemes的數(shù)組值,里面包含需要添加

應用隱私控制-外部調用
iOS9增加了隱私控制,自己的應用如果需要調用其它應用,需要在工程的info.plist中添加一個key為LSApplicationQueriesSchemes的數(shù)組值,里面包含需要添加白名單的string類型的scheme。即使用URL scheme將其加入白名單。如項目中使用了qq,微信等分享登錄功能,需要添加的值為:
mqqopensdkapiV2mqqOpensdkSSoLoginmqqmqzoneopensdkapiV2mqzoneopensdkapi19mqzoneopensdkapimqzoneopensdkmqzoneweixinwechat ...

如果不添加該項,使用canOpenURL:判斷應用是否安裝時會報錯。
canOpenURL: failed for URL: "mqqopensdkapiV2://qqapp" - error: "This app is not allowed to query for scheme mqqopensdkapiV2”
bitcode
bitcode是被編譯程序的一種中間形式的代碼。包含bitcode配置的程序將會在App store上被編譯和鏈接。bitcode允許蘋果在后期重新優(yōu)化我們程序的二進制文件,而不需要我們重新提交一個新的版本到App store上。
Xcode7 默認開啟了bitcode,如果App使用的第三方類庫不支持bitcode會提示錯誤,只需要在”Build Settings”->”Enable Bitcode”選項中關閉bitcode即可。
開啟Bitcode編譯后,編譯產(chǎn)生的文件體積會變大 (因為是中間代碼,不是用戶下載的包),且dSYM文件不能用來崩潰日志的符號化 (用戶下載的包是Apple服務重新編譯產(chǎn)生的,有產(chǎn)生新的符號文件)。通過Archive方式上傳AppStore的包,可以在 Xcode的Organizer工具中下載對應安裝包的新的符號文件。
改用更安全的HTTPS
如果在Xcode 9之前使用的時http請求,那么在XCode 9上編譯的App是不能聯(lián)網(wǎng)的。iOS9把所有的http請求都改為https了:iOS9系統(tǒng)發(fā)送的網(wǎng)絡請求將統(tǒng)一使用TLS 1.2 SSL。采用TLS 1.2 協(xié)議,目的是 強制增強數(shù)據(jù)訪問安全,而且 系統(tǒng) Foundation 框架下的相關網(wǎng)絡請求,將不再默認使用 Http 等不安全的網(wǎng)絡協(xié)議,而默認采用 TLS 1.2。
修改方法是要么使服務器支持https訪問,要么關閉https的使用。第一種方法對于個人開發(fā)者來說代價還是比較大的,第二種方法:在工程的Info.plist文件里添加NSAppTransportSecurity字典類型的,添加一個元素:key為NSAllowsArbitraryLoads,值為YES。
什么是SSL/TLS
HTTP+SSL/TLS+TCP = HTTPS
TLS 是 SSL 新的別稱。SSL 3.0版本之后的迭代版本被重新命名為TLS 1.0。
SSL/TLS協(xié)議解決的問題
1.所有信息都是加密傳播,第三方無法竊 聽。
2.具有校驗機制,一旦被篡改,通信雙方會立刻發(fā)現(xiàn)。
3.配備身份證書,防止身份被冒充。
iOS9中新增App Transport Security(簡稱ATS)特性, 主要使原來請求的時候用到的HTTP,都轉向TLS1.2協(xié)議進行傳輸。這也意味著所有的HTTP協(xié)議都強制使用了HTTPS協(xié)議進行傳輸。
在Info.plist新增一段用于控制ATS的配置:

這段配置中的NSAppTransportSecurity是ATS配置的根節(jié)點,配置了節(jié)點表示告訴系統(tǒng)要走自定義的ATS設置。而NSAllowsAritraryLoads節(jié)點則是控制是否禁用ATS特性,設置YES就是禁用ATS功能。
其實ATS并不單單針對HTTP進行了限制,而是對HTTPS也有一定的要求,如果你希望自己所有的域名,除了一些已知并不會使用ATS之外的,所有通信都使用ATS。這種情況下你可以指定一些不使用ATS的特殊情況,而其余的情況使用ATS。對于這種場景,可以使用NSExceptionDomains來標識使用ATS默認設置的域。
以QQdemo為例:

其中NSIncludesSubdomains設置為YES表示子級域名都使用相同設置。NSExceptionRequiresForwardSecrecy為NO由于不支持ForwardSecrecy,因此屏蔽掉改功能。最后NSExceptionAllowInsecureHTTPLoads設置為YES,則表示允許訪問沒有證書或者是自簽名、過期、主機名不匹配的證書引發(fā)的錯誤的域名(這里檢查過QQ的證書貌似沒有什么問題,但是還是需要設置此項才允許訪問)。這是比較嚴謹?shù)淖龇ǎ付四茉L問哪些特定的HTTP。
forward secrecy
中文可叫做前向保密。perfect forward secrecy,叫做完全前向保密,要求一個密鑰只能訪問由它所保護的數(shù)據(jù);用來產(chǎn)生密鑰的元素一次一換,不能再產(chǎn)生其他的密鑰;一個密鑰被破解,并不影響其他密鑰的安全性。
支持Forward Secrecy的加密方式
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
本文轉自:簡書
相關熱詞搜索:ios 移動開發(fā) 安全 mobile 移動開發(fā)
上一篇:Qt不再使用LGPLv2.1授權
下一篇:一些實用的GitHub模式
分享到:
收藏
