在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ iOS/ 為什么今天安全仍然重要
與四軸無人機(jī)的通訊
在沙盒中編寫腳本
結(jié)構(gòu)體和值類型
深入理解 CocoaPods
UICollectionView + UIKit 力學(xué)
NSString 與 Unicode
代碼簽名探析
測試
架構(gòu)
第二期-并發(fā)編程
Metal
自定義控件
iOS 中的行為
行為驅(qū)動(dòng)開發(fā)
Collection View 動(dòng)畫
截圖測試
MVVM 介紹
使 Mac 應(yīng)用數(shù)據(jù)腳本化
一個(gè)完整的 Core Data 應(yīng)用
插件
字符串
為 iOS 建立 Travis CI
先進(jìn)的自動(dòng)布局工具箱
動(dòng)畫
為 iOS 7 重新設(shè)計(jì) App
XPC
從 NSURLConnection 到 NSURLSession
Core Data 網(wǎng)絡(luò)應(yīng)用實(shí)例
GPU 加速下的圖像處理
自定義 Core Data 遷移
子類
與調(diào)試器共舞 - LLDB 的華爾茲
圖片格式
并發(fā)編程:API 及挑戰(zhàn)
IP,TCP 和 HTTP
動(dòng)畫解釋
響應(yīng)式 Android 應(yīng)用
初識 TextKit
客戶端
View-Layer 協(xié)作
回到 Mac
Android
Core Image 介紹
自定義 Formatters
Scene Kit
調(diào)試
項(xiàng)目介紹
Swift 的強(qiáng)大之處
測試并發(fā)程序
Android 通知中心
調(diào)試:案例學(xué)習(xí)
從 UIKit 到 AppKit
iOS 7 : 隱藏技巧和變通之道
安全
底層并發(fā) API
消息傳遞機(jī)制
更輕量的 View Controllers
用 SQLite 和 FMDB 替代 Core Data
字符串解析
終身學(xué)習(xí)的一代人
視頻
Playground 快速原型制作
Omni 內(nèi)部
同步數(shù)據(jù)
設(shè)計(jì)優(yōu)雅的移動(dòng)游戲
繪制像素到屏幕上
相機(jī)與照片
音頻 API 一覽
交互式動(dòng)畫
常見的后臺實(shí)踐
糟糕的測試
避免濫用單例
數(shù)據(jù)模型和模型對象
Core Data
字符串本地化
View Controller 轉(zhuǎn)場
照片框架
響應(yīng)式視圖
Square Register 中的擴(kuò)張
DTrace
基礎(chǔ)集合類
視頻工具箱和硬件加速
字符串渲染
讓東西變得不那么糟
游戲中的多點(diǎn)互聯(lián)
iCloud 和 Core Data
Views
虛擬音域 - 聲音設(shè)計(jì)的藝術(shù)
導(dǎo)航應(yīng)用
線程安全類的設(shè)計(jì)
置換測試: Mock, Stub 和其他
Build 工具
KVC 和 KVO
Core Image 和視頻
Android Intents
在 iOS 上捕獲視頻
四軸無人機(jī)項(xiàng)目
Mach-O 可執(zhí)行文件
UI 測試
值對象
活動(dòng)追蹤
依賴注入
Swift
項(xiàng)目管理
整潔的 Table View 代碼
Swift 方法的多面性
為什么今天安全仍然重要
Core Data 概述
Foundation
Swift 的函數(shù)式 API
iOS 7 的多任務(wù)
自定義 Collection View 布局
測試 View Controllers
訪談
收據(jù)驗(yàn)證
數(shù)據(jù)同步
自定義 ViewController 容器轉(zhuǎn)場
游戲
調(diào)試核對清單
View Controller 容器
學(xué)無止境
XCTest 測試實(shí)戰(zhàn)
iOS 7
Layer 中自定義屬性的動(dòng)畫
第一期-更輕量的 View Controllers
精通 iCloud 文檔存儲(chǔ)
代碼審查的藝術(shù):Dropbox 的故事
GPU 加速下的圖像視覺
Artsy
照片擴(kuò)展
理解 Scroll Views
使用 VIPER 構(gòu)建 iOS 應(yīng)用
Android 中的 SQLite 數(shù)據(jù)庫支持
Fetch 請求
導(dǎo)入大數(shù)據(jù)集
iOS 開發(fā)者的 Android 第一課
iOS 上的相機(jī)捕捉
語言標(biāo)簽
同步案例學(xué)習(xí)
依賴注入和注解,為什么 Java 比你想象的要好
編譯器
基于 OpenCV 的人臉識別
玩轉(zhuǎn)字符串
相機(jī)工作原理
Build 過程

為什么今天安全仍然重要

在寫這篇文章的時(shí)候,系統(tǒng)管理員們正忙于確保自己的網(wǎng)絡(luò)足以應(yīng)對 CVE-2014-6271,也就是所謂的 “Shellshock” 漏洞。攻擊報(bào)告表明通過漏洞可以獲得 bash shell 的權(quán)限,從而使攻擊者可以控制其運(yùn)行某些功能。而 bash shell 廣泛存在在大多數(shù) Linux 以及 OS X 甚至是 iOS 系統(tǒng)中(雖然大部分人都不太可能使用它)。實(shí)際上,人們從上世紀(jì) 60 年代開始設(shè)計(jì)相容分時(shí)系統(tǒng)(CTTS)時(shí)就已經(jīng)開始考慮安全性了,但為何到現(xiàn)在這個(gè)問題都沒有解決?為什么軟件系統(tǒng)仍有安全問題?又是為什么我們應(yīng)用開發(fā)者被告誡必須在安全上有所行動(dòng)?

我們所了解的已經(jīng)變化

CTSS 所面臨的最大挑戰(zhàn)是允許多用戶訪問同一臺計(jì)算機(jī)而互不干擾,這也影響了之后系統(tǒng)的架構(gòu)設(shè)計(jì),其中也包括衍生了 OS X 和 iOS 的 UNIX 系統(tǒng)。解決的辦法是,每個(gè)用戶在一個(gè)仿佛是真實(shí)電腦的環(huán)境中獨(dú)立運(yùn)行任務(wù),但實(shí)際上卻使用的是共享計(jì)算機(jī)生成的一個(gè)沙箱。

當(dāng)一個(gè)用戶需要大量資源,這一解決方案應(yīng)避免對其他用戶的資源產(chǎn)生不利影響。而這個(gè)方案也導(dǎo)致了擁有配額資源的多用戶賬戶以及賬戶管理系統(tǒng)的出現(xiàn)。這種想法頗為有效:在 2006 年,我使用了這個(gè)系統(tǒng),讓超過 1000 名用戶訪問了共享的 OS X 電腦。

不幸的是,當(dāng)初對這個(gè)問題的看法并不完整。那些防止某個(gè)賬號去使用分配給其他賬號的資源的技術(shù)手段,往往并不能防止某個(gè)用戶使用分配給其他用戶的資源。如果一個(gè)用戶可以獲得其他賬戶的權(quán)限,或者能說服其他用戶運(yùn)行自己的程序的話,那賬戶和權(quán)限系統(tǒng)將可以被規(guī)避。這也是 Shellshock 漏洞所暴露的問題的根源:攻擊者可以獲得受害者的權(quán)限和資源來運(yùn)行自己的程序。

問題也已經(jīng)變化

從 UNIX 設(shè)計(jì)的時(shí)代開始,計(jì)算機(jī)就開始變得更小、更快和更容易連接。越來越多的情況是當(dāng)初軟件創(chuàng)建時(shí)所沒有預(yù)見到的。當(dāng)電子郵件的所有用戶都在同一所大學(xué),且所有終端都?xì)w大學(xué)所有時(shí),作為一個(gè)有效且公開的純文本系統(tǒng),它能良好的運(yùn)行。但是當(dāng)它要支持來自不同組織、不同地點(diǎn)甚至不同網(wǎng)絡(luò)的人進(jìn)行溝通時(shí),就需要不一樣的解決方案了。

在某種程度上,iOS 仍然算是一個(gè)多用戶系統(tǒng)。與 UNIX 設(shè)計(jì)的環(huán)境不同,iOS 所有用戶訪問的賬號和手機(jī)持有者所操作的賬號是同一個(gè)。所有這些用戶都是手機(jī)賬號的持有者,他們包括:你、我、手機(jī)上所裝應(yīng)用的開發(fā)者以及蘋果。

這的確有點(diǎn)過于簡單粗暴,畢竟許多應(yīng)用的功能不止局限于開發(fā)者提交到應(yīng)用商店的那些。SDK、遠(yuǎn)程分析服務(wù)以及開源組件意味著許多應(yīng)用中實(shí)際上包含了來自多個(gè)機(jī)構(gòu)的源碼,并且必須通過網(wǎng)絡(luò)進(jìn)行通信就有潛在被監(jiān)視的風(fēng)險(xiǎn)。游戲規(guī)則已經(jīng)不再是保護(hù)不同的人彼此使用同一臺計(jì)算機(jī),而是保證同一個(gè)人的不同任務(wù)不會(huì)互相干擾。

這些聽起來挺糟糕的,就好像有點(diǎn)輕微的偏執(zhí)狂癥狀?,F(xiàn)實(shí)情況是,安全能夠成為推動(dòng)力量,因?yàn)樗鼫p少了在新的場景和過程中的風(fēng)險(xiǎn),為人們進(jìn)入更廣闊的空間提供了可能。想象一下如果沒有使用密碼學(xué),移動(dòng)銀行業(yè)務(wù)將會(huì)增加多少風(fēng)險(xiǎn),而又會(huì)有多少人(甚至包括銀行)愿意開展這項(xiàng)業(yè)務(wù)。

...但是也有一些事情依然沒變

UNIX 仍然與現(xiàn)代的軟件安全討論息息相關(guān)的唯一原因是,我們?nèi)匀粵]有擺脫這個(gè)系統(tǒng),這主要是因?yàn)槲覀儚膩矶紱]有嘗試過。計(jì)算的歷史充滿了這樣的例子,明明有些系統(tǒng)已經(jīng)暴露出重大的安全問題,但它依然在使用,因?yàn)檫@個(gè)行業(yè)在清理自己爛攤子方面集體都表現(xiàn)得很差。即使是最新版本的 iOS,擁有最新的工具和最新的編程語言,我們在其中所調(diào)用的方法,例如 C 語言的字符串庫,也被認(rèn)為在幾十年前就需要被重構(gòu)。

在軟件系統(tǒng)的演變史中,補(bǔ)丁一直存在。接受不完整的技術(shù)有利于定位已發(fā)現(xiàn)的問題。雖然我們喜歡聲稱我們發(fā)明了未來,而實(shí)際上,我們花費(fèi)了大量時(shí)間和資源來堅(jiān)守過去。當(dāng)然,也許更換這些系統(tǒng)也會(huì)引入許多我們已經(jīng)修復(fù)的問題。

蘋果不能解決我們的問題

蘋果告訴我們每一個(gè)版本的 iOS 都比過去更安全,甚至公布了一份系統(tǒng)安全特性細(xì)則的白皮書。在其中蘋果介紹它如何使用了不斷更新的(希望是更加先進(jìn)的)加密算法和協(xié)議,更健壯的鑒定表單以及其他技術(shù)。為什么這樣還是不夠?

操作系統(tǒng)只能提供適用任意應(yīng)用的安全特性;但不能提供你的應(yīng)用所需的一切。雖然蘋果能告訴你,你的 app 連接到了一個(gè)提供了一些有效身份證明的服務(wù)器,但它不能告訴你這是否是一個(gè)值得你信任的身份

蘋果可以提供文件保護(hù)來加密你的數(shù)據(jù),并且在收到請求時(shí)解鎖。但它不會(huì)告訴你什么時(shí)候可以進(jìn)行這樣的請求。

蘋果可以限制應(yīng)用之間的溝通方式,使得數(shù)據(jù)只能在受控的方式如 URL scheme 中進(jìn)行。蘋果既不能決定哪個(gè)級別的控制適合你的應(yīng)用,也不能告訴你你的應(yīng)用應(yīng)該接受什么形式的數(shù)據(jù),以及什么形式的數(shù)據(jù)是不合適的。

你不能不管(至少不能完全不管)

和操作系統(tǒng)的特性相似,移動(dòng)應(yīng)用程序漏洞排行榜能告訴你哪些問題是許多應(yīng)用都遇到的,但卻不能告訴你具體哪些和你的應(yīng)用相關(guān),以及它們是如何暴露的。它們也絕對不會(huì)告訴你當(dāng)你的用戶使用你的應(yīng)用程序時(shí)漏洞被利用的詳細(xì)情況---漏洞從執(zhí)行的任務(wù)、上下文和環(huán)境中產(chǎn)生并且隨著用戶操作的過程中浮現(xiàn)出來。

安全是你應(yīng)用程序架構(gòu)的一部分:它是一個(gè)約束集合,你必須像顧慮 app 的響應(yīng)時(shí)間、客戶群的規(guī)?;蛘呤峭獠肯到y(tǒng)的兼容性那樣來考慮安全的問題。這意味著你必須將安全模塊設(shè)計(jì)到你的應(yīng)用中,就像你設(shè)計(jì)應(yīng)用時(shí)遵循的其他約束條件一樣。

一個(gè)評估應(yīng)用安全常用的設(shè)計(jì)技巧是風(fēng)險(xiǎn)建模 :找到黑客們想要攻擊你系統(tǒng)的原因,查出他們在使用現(xiàn)有的資源下的攻擊方式,以及探索在系統(tǒng)設(shè)計(jì)中的可能被成功攻擊的漏洞。

即便你已經(jīng)確定了漏洞,還是要使用許多方法來應(yīng)對。拿個(gè)現(xiàn)實(shí)生活中的例子打比方,假設(shè)你正打算確定假期行程,但在這周你老板仍有需要你保持聯(lián)系甚至隨時(shí)準(zhǔn)備出現(xiàn)在辦公室以應(yīng)對緊急情況的可能性。你可以做如下應(yīng)對:

  • 接受風(fēng)險(xiǎn) - 無論如何仍然預(yù)定酒店機(jī)票之類的假期行程,但隨時(shí)接受你可能去不了的風(fēng)險(xiǎn)。
  • 避免風(fēng)險(xiǎn) - 辭掉工作,這樣你絕對不會(huì)被電話騷擾。
  • 對風(fēng)險(xiǎn)作出反應(yīng) - 風(fēng)險(xiǎn)發(fā)生的時(shí)候試著馬上解決它,而不是提前回避它。
  • 轉(zhuǎn)移風(fēng)險(xiǎn) - 為你的假期購買保險(xiǎn),如果它因?yàn)榻拥诫娫挾Y(jié)束,你可以重新安排一個(gè)假期或者獲得退款。
  • 放棄行動(dòng) - 放棄度假的想法。

所有這些可能性也都可以在軟件安全中使用。你可以選擇一個(gè)或者結(jié)合多個(gè)方法。我們的目標(biāo)通常是不是規(guī)避風(fēng)險(xiǎn),而是減輕風(fēng)險(xiǎn)。風(fēng)險(xiǎn)減輕到多少是合理的?這取決于你、你的公司、你的客戶和你的合作伙伴能夠接受剩余多少風(fēng)險(xiǎn)。

你緩解風(fēng)險(xiǎn)的技術(shù)同樣取決于你的目標(biāo):當(dāng)你可以引入任何安全對策時(shí)你想要達(dá)到什么目標(biāo)?你們是要保護(hù)客戶隱私、保證服務(wù)的持續(xù)可用性還是只要遵循相應(yīng)的法律?如果這些目標(biāo)沖突,你需要比較它們的優(yōu)先級。你的決定可能取決于具體情況,這未必是你能提前設(shè)計(jì)出來的。建立充足的應(yīng)急預(yù)案能讓大家在再次發(fā)生不好的事的時(shí)候知道應(yīng)該如何處理就好。

結(jié)論

盡管軟件安全技術(shù)和系統(tǒng)(比如 iOS)的安全保障能力一直在進(jìn)步和創(chuàng)新,但風(fēng)險(xiǎn)分析和設(shè)計(jì)安全對策依然是應(yīng)用開發(fā)者們的責(zé)任。那些使用我們應(yīng)用時(shí)所產(chǎn)生的風(fēng)險(xiǎn)是不可能通過操作系統(tǒng)供應(yīng)商或者框架開發(fā)人員解決的。這些風(fēng)險(xiǎn)是由應(yīng)用所提供給用戶的功能,或者在應(yīng)用部署的環(huán)境或系統(tǒng)中所產(chǎn)生的。

蘋果用 iOS SDK 中的安全和加密功能幫助我們找到了水源。而喝水的事情,得靠我們自己。