原文鏈接:http://www.cnblogs.com/JackieHoo/p/5060165.html
網(wǎng)絡安全
1.安全地傳輸用戶密碼信息
安全隱患:
黑客可以在Mac下使用Charles軟件(如果在Windows下,可以使用Fiddler軟件)來將自己的電腦設置成代理服務器膝擂,從而截取應用的網(wǎng)絡請求,分析目標應用在通信協(xié)議上是否有安全問題绊谭。
如果每一個移動應用都明文傳輸用戶密碼提茁,那么我們可以想象這樣一個場景:黑客在咖啡館或機場等一些公共場所,將自己的電腦設置成與該場所一樣名字的免費Wi-Fi称勋,受害者只要不小心使用了該Wi-Fi绘梦,則可能泄漏自己的明文密碼橘忱。對于大多數(shù)普通人來說,他們會使用一樣的密碼登錄他的所有的賬號卸奉,這就意味著他的其他賬號:例如淘寶或網(wǎng)上銀行賬號也有被盜的風險钝诚。
解決方案:
事先生成一對用于加密的公私鑰,客戶端在登錄時榄棵,使用公鑰將用戶的密碼加密后凝颇,將密文傳輸?shù)椒掌髋斯啊7掌魇褂盟借€將密碼解密,然后加鹽(Salt拧略,在密碼學中是指芦岂,通過在密碼任意固定位置插入特定的字符串,讓散列后的結果和使用原始密碼的散列結果不相符垫蛆,這個過程稱之為“加鹽”)禽最,之后再多次求MD5,然后再和服務器原來存儲的用同樣方法處理過的密碼匹配袱饭,如果一致川无,則登錄成功。這樣的做法虑乖,保證黑客即使截獲了加密后的密文懦趋,由于沒有私鑰,也無法還原出原始的密碼疹味。而服務器即使被黑客攻陷仅叫,黑客除了暴力嘗試,也無法從加鹽和多次MD5后的密碼中還原出原始的密碼糙捺。這樣就保證了用戶密碼的安全诫咱。
2. 防止通信協(xié)議被輕易破解
安全隱患:
除了上面提到的明文傳輸密碼的問題外,移動端應用還要面對黑客對于通信協(xié)議的破解的威脅继找。在成功破解了通信協(xié)議后遂跟,黑客可以模擬客戶端登錄逃沿,進而偽造一些用戶行為婴渡,可能對用戶數(shù)據(jù)造成危害。例如騰訊出品的消除游戲《天天愛消除》凯亮,在淘寶上就有很多售價僅為1元的代練服務边臼,如果真正是人工代練,是不可能賣這么便宜的假消,只有可能是該游戲的通信協(xié)議被破解柠并,黑客制作出了代練的機器人程序。通信協(xié)議被破解除了對于移動端游戲有嚴重危害外富拗,對于應用也有很大的危害臼予。例如針對微信,黑客可以制作一些僵尸賬號啃沪,通過向微信公共賬號后臺發(fā)送垃圾廣告粘拾,達到贏利的目的。而iPhone設備上的iMessage通信協(xié)議居然也被破解了创千,所以很多iPhone用戶會收到來自iMessage的垃圾廣告缰雇。
解決方案:
對于以上提到的問題入偷,開發(fā)者可以選擇類似ProtoBuf(Google提供的一個開源數(shù)據(jù)交換格式,其最大的特點是基于二進制械哟,因此比傳統(tǒng)的JSON格式要短小得多)之類的二進制通信協(xié)議或自己實現(xiàn)通信協(xié)議疏之,對于傳輸?shù)膬?nèi)容進行一定程度的加密,以增加黑客破解協(xié)議的難度暇咆。
3. 驗證應用內(nèi)支付的憑證
安全隱患:
iOS應用內(nèi)支付(IAP)是眾多應用贏利的方式锋爪,通過先讓用戶免費試用或試玩,然后提供應用內(nèi)支付來為愿意付費的用戶提供更強大的功能爸业,這種模式特別適合不習慣一開始就掏錢的中國用戶几缭。但由于國內(nèi)越獄用戶的比例比較大,所以我們也需要注意應用內(nèi)支付環(huán)節(jié)中的安全問題沃呢。簡單來說年栓,越獄后的手機由于沒有沙盒作為保護,黑客可以對系統(tǒng)進行任意地修改薄霜,所以在支付過程中某抓,蘋果返回的已付款成功的憑證可能是偽造的《韫希客戶端拿到付款憑證之后否副,還需要將憑證上傳到自己的服務器上,進行二次驗證崎坊,以保證憑證的真實性备禀。
另外,我們發(fā)現(xiàn)越獄用戶的手機上奈揍,很可能被黑客用中間人攻擊技術來劫持支付憑證曲尸。這對于黑客有什么好處呢?因為蘋果為了保護用戶的隱私男翰,支付憑證中并不包含任何用戶的賬號信息另患,所以我們的應用和服務器無法知道這個憑證是誰買的,而只能知道這個憑證是真的還是假的蛾绎。所以在驗證憑證時昆箕,哪個賬號發(fā)起了驗證請求,我們就默認這個憑證是該賬號擁有的租冠。如果黑客將憑證截獲鹏倘,就可以偽裝成真實用戶來驗證憑證或者轉手出售獲利。
打個比方顽爹,這就類似于很多商場的購物卡一樣纤泵,由于是不記名的,黑客如果將你買的購物卡偷竊然后去刷卡購物话原,商場是無法簡單地區(qū)分出來的夕吻。
解決方案:
因此诲锹,對于應用內(nèi)支付,開發(fā)者除了需要仔細地驗證購買憑證外涉馅,也需要告知用戶在越獄手機上進行支付的風險归园。
本地文件和數(shù)據(jù)安全
1. 程序文件的安全
安全隱患:
iOS應用的大部分邏輯都是在編譯后的二進制文件中,但由于近年來混合式(Hybrid)編程方式的興起稚矿,很多應用的部分功能也采用內(nèi)嵌Web瀏覽器的方式來實現(xiàn)庸诱。例如騰訊QQ iOS客戶端的內(nèi)部,就有部分邏輯是用Web方式實現(xiàn)的晤揣。由于iOS安裝文件其實就是一個zip包桥爽,所以我們可以通過解壓,看到包內(nèi)的內(nèi)容昧识。
可以看到钠四,這些文件都有著完整清晰的注釋。通過分析這些JavaScript文件跪楞,黑客可以很輕松地知道其調用邏輯缀去。在越獄手機上,還可以修改這些JavaScript代碼甸祭,達到攻擊的目的缕碎。
解決方案:
通過將JavaScript源碼進行混淆和加密,可以防止黑客輕易地閱讀和篡改相關的邏輯池户,也可以防止自己的Web端與Native端的通信協(xié)議泄漏咏雌。
2.本地數(shù)據(jù)安全
安全隱患:
iOS應用的數(shù)據(jù)在本地通常保存在本地文件或本地數(shù)據(jù)庫中。如果對本地的數(shù)據(jù)不進行加密處理校焦,很可能被黑客篡改赊抖。比如一款名為《LepsWorld 3》的游戲,打開它的本地文件斟湃,可以很容易地找到熏迹,它使用了一個名為ItempLifes的變量保存生命數(shù)值(如圖4所示)檐薯。于是我們可以簡單修改該值凝赛,達到修改游戲參數(shù)的目的。而在淘寶上坛缕,也可以找到許多以此掙錢的商家墓猎。
解決方案:
對于本地的重要數(shù)據(jù),我們應該加密存儲或將其保存到keychain中赚楚,以保證其不被篡改毙沾。
源代碼安全
安全隱患:
通過file、class-dump宠页、theos左胞、otool等工具寇仓,黑客可以分析編譯之后的二進制程序文件,不過相對于這些工具來說烤宙,IDA的威脅最大遍烦。IDA是一個收費的反匯編工具,對于Objective-C代碼躺枕,它常撤恚可以反匯編到可以方便閱讀的程度,這對于程序的安全性拐云,也是一個很大的危害罢猪。因為通過閱讀源碼,黑客可以更加方便地分析出應用的通信協(xié)議和數(shù)據(jù)加密方式叉瘩。
解決方案:
反匯編的代碼被獲得后膳帕,由于軟件內(nèi)部邏輯相比匯編代碼來說可讀性高了很多。黑客可以用來制作軟件的注冊機薇缅,也可以更加方便地破解網(wǎng)絡通信協(xié)議备闲,從而制作出機器人(“僵尸”)賬號。最極端的情況下捅暴,黑客可以將反匯編的代碼稍加修改恬砂,植入木馬,然后重新打包發(fā)布在一些越獄渠道上蓬痒,這將對用戶產(chǎn)生巨大的危害泻骤。