丝袜足j国产在线视频456|亚洲精品白浆高清久久久久久|亚洲熟妇无码专区|丝袜国产污视频在线播放

  • 購物 手機(jī)

    ios app如何做才安全

    2018-07-31 15:45:04 來源: 佰佰安全網(wǎng) 1874人閱讀
    導(dǎo)語:

    大家都知道蘋果手機(jī)是iOS系統(tǒng),那么,ios app如何做才安全呢,隨小編一起了解下吧。

    ios app如何做才安全

    APPLE的iOS是封閉的,每個(gè)app有著沙盒路徑,發(fā)布途徑也只有唯一的APPStore, 但是,危險(xiǎn)遍布于開發(fā)的各個(gè)階段,同時(shí)對安全的重視程度也間接提現(xiàn)了一個(gè)開發(fā)者的能力和意識。那么,ios app如何做才安全呢?小編總結(jié)了以下幾點(diǎn)。

    1、ipa包加殼

    首先,我們可以通過iTunes 下載 AppStore的ipa文件(蘋果 把開發(fā)者上傳的ipa包進(jìn)行了加殼再放到AppStore中),所以我們從AppStore下載的ipa都是加殼的,所以不能直接用來反編譯。

    得到ipa文件可以分析APP 里包含的一些資源,如:圖片、plist文件、靜態(tài)wap頁、.bundle 等。

    所以不要 在plist文件、項(xiàng)目中的靜態(tài)文件中 存儲關(guān)鍵的信息,如果要保存,記得 對稱加密(這樣可以增加破解的難度)。

    如果是越獄的手機(jī),從手機(jī)上的PP助手下載的ipa包 都是脫殼之后的,可以直接用來反編譯。

    2、敏感信息存儲位置

    我們可以用軟件 查看 APP的沙盒,查看里面存儲的 文件:sqlite、plist(NSUserdefault會存到Library下的Preferences中 的 plist文件中)、圖片等,NSUserdefault 中不要保存關(guān)鍵信息,如果要保存,還是加密吧。。sqlite也是這樣子的。

    iOS 8.3之前 不越獄的手機(jī)也可以 直接用MAC上的PP助手、iTool 來查看 任何APP的沙盒(系統(tǒng)APP除外)。iOS 8.3之后就不行了。

    越獄手機(jī)都可以查看任意APP的沙盒,包括系統(tǒng)APP的沙盒。還有iOS的系統(tǒng)目錄等。

    3、設(shè)備安全(越獄,丟失)

    越獄手機(jī)直接用PP助手下載的就是 脫殼的ipa,所以不用再脫了。對AppStore下載的ipa包 可以用工具對加殼的ipa 進(jìn)行脫殼,再用IDA、Hopper 進(jìn)行反編譯,進(jìn)行分析 ,可以得到 近乎易懂的 偽代碼。但是反編譯后的代碼 要 一個(gè)方法一個(gè)方法的去分析,類似面向過程編程。。當(dāng)然也有工具 去提取 項(xiàng)目中的所有.h文件。不過 反編譯 終歸是個(gè) 耐心的活,急躁的人容易砸電腦。

    4、APP反編譯(逆向工程)

    所有的APP都是可以反編譯的,所以 很關(guān)鍵的數(shù)據(jù) 最好通過接口獲取。

    那么接口如何保證安全呢。首先用HTTPS,雖然HTTPS已經(jīng)很安全了,但是數(shù)據(jù)也是有可能被破解的,這個(gè)后面會介紹。。所以 接口一定要自己加密。

    非對稱加密(RSA)現(xiàn)在 還是沒有辦法破解的,但是因?yàn)?非對稱加密的效率低,所以很少有企業(yè)將所有的接口都用非對稱加密。

    接口如果用對稱加密,密鑰 放到代碼里 是能被反編譯出來的。如果你的 APP的安全性很高,就不要把密鑰 寫到代碼里。

    可以這樣處理:

    先通過非對稱加密的接口 獲取密鑰,然后 再在 后面的 接口通信中 用這個(gè)密鑰進(jìn)行加密。這樣做 就類似 HTTPS 的簡化版實(shí)現(xiàn)了。安全性很高。目前應(yīng)該 是不能破解的。

    5、代碼內(nèi)容加密(對稱加密/非對稱加密)

    根據(jù)APP的安全性,也可以把 關(guān)鍵數(shù)據(jù) 寫在代碼里,可以保存的是加密后的數(shù)據(jù)。比如,我給一個(gè)變量賦值:U2FsdGVkX1+rN+sgpLmOYTqoVhRRerZj9oobZAIPzjo=,你不知道 我這個(gè)字符串解密后是 123456,我只是使用的時(shí)候才解密處理用。

    這樣也只是增加了黑客獲取關(guān)鍵數(shù)據(jù)的難度。

    6、安全密鑰更新周期

    密鑰要定期更換。比如 3個(gè)月或半年換一次,如果密鑰是從接口通過非對稱加密獲取的,直接修改服務(wù)端就可以了。

    如果密鑰是寫在代碼里的。就等APP升級新的版本的時(shí)候,新版本的APP和其對應(yīng)的接口版本 都 修改為新的密鑰 就可以了。

    舊的接口版本和APP版本還用以前的密鑰,等強(qiáng)制更新的時(shí)候才會失效。

    如果一個(gè)APP 一個(gè)密鑰用上幾年都不變 ,是很危險(xiǎn)的。離職的人員都可以直接用以前 的代碼 來獲取相關(guān)的數(shù)據(jù)。特別是 支付相關(guān)的,有的服務(wù)端甚至沒有 去校驗(yàn)支付的金額或其他數(shù)據(jù),導(dǎo)致 離職人員用1分錢 可以買到 任何價(jià)格的 線上產(chǎn)品(服務(wù)端這種在線上環(huán)境留后門的安全性問題,我是真的遇到有人這么搞)。。

    7、代碼混淆

    最好能 進(jìn)行 代碼混淆,能增加反編譯的難度,當(dāng)然只是增加了難度,還是能破解的。但是 代碼混淆 的 性價(jià)比是很高的,就是你這邊付出了 一點(diǎn)時(shí)間,而黑客 就要多付出幾十倍 的時(shí)間。。其實(shí) 接口 自己加密 的性價(jià)比也很高。

    8、接口安全(雙向加密)

    接口返回的數(shù)據(jù) 最好也進(jìn)行 加密。比如,現(xiàn)在大家都連我的熱點(diǎn),或者代理服務(wù)器,我是有可能 直接 獲取你的APP的 HTTPS 解密后的json數(shù)據(jù)(如何獲取相見《逆向工程》)。當(dāng)然,如果你覺得 你的APP返回的json數(shù)據(jù)都是 不重要的,也可以不對數(shù)據(jù)進(jìn)行加密。

    像微信、QQ、支付寶這種 安全性高的,通信兩邊的數(shù)據(jù) 收發(fā) 都 應(yīng)該 進(jìn)行加密的。

    9、通訊安全,第三方庫漏洞

    像HTTPS本身 是否有漏洞這種我們就不去說了。就 去年iOS的AFNetworking 漏洞事件,完全是 代碼的問題。雖然不是HTTPS的安全機(jī)制的問題。但是 黑客還是能很容易拿到HTTPS解密后的數(shù)據(jù)。

    去年iOS的AFNetworking曝SSL漏洞 就涉及2.5萬個(gè)APP。 有的銀行的APP,只用了HTTPS,通信都不加密,就很容易拿到明文數(shù)據(jù)了。有的APP里的各種數(shù)據(jù)都 采用復(fù)雜的加密算法,破解人員看到都煩,去破解這個(gè)APP的時(shí)間還不如去搞其他的幾個(gè)APP。

    HTTPS 本身是安全的。但是數(shù)據(jù)還是可能被破解。所以 不要覺得 我只用HTTPS 就安全了。理論上 說任何 的 協(xié)議、代碼都是可能有漏洞的,只是有的現(xiàn)在 還沒被發(fā)現(xiàn)或破解,并不代表一直不能被破解。。

    10、敏感信息安全加密

    黑客不會 去一個(gè)手機(jī)一個(gè)手機(jī)的 把沙盒數(shù)據(jù) 拿出來 來看每個(gè)用戶的數(shù)據(jù)(黑客也不可能拿到你的手機(jī))。但是如果黑客撿到 你的手機(jī) ,都不用登陸微信 就可以 通過微信APP的沙盒 拿到你和小三的偷情聊天記錄、能拿到你的銀行卡號,你的手機(jī)號(很多APP都把手機(jī)號、銀行卡號、聊天記錄 明文保存在沙盒里)。。你是不是會覺得微信 怎么這么low。我們只是拿微信舉個(gè)例子,微信還不會這么low。

    11、通訊網(wǎng)絡(luò)安全

    黑客最主要的還是通過網(wǎng)絡(luò)來獲取 他們想要的數(shù)據(jù)(網(wǎng)絡(luò)的安全級別是最高的)。如果恰好 你的APP 加密密鑰 明文 保存到了沙盒里 或者 你的 數(shù)據(jù)通信 還沒有進(jìn)行加密,恭喜你,你的數(shù)據(jù)和裸奔沒啥區(qū)別。。

    有人說:“我就做了個(gè)聊天的APP,沒啥機(jī)密信息。再說 大家連的都是 公司的wifi、4G網(wǎng)絡(luò),不會有問題的,所以我的通信才不加密,麻煩。”

    舉個(gè)搞笑的栗子:

    你現(xiàn)在在飛機(jī)場,連著免費(fèi)wifi,正在和副總裁在微信里 談著 價(jià)值100個(gè)億的創(chuàng)意的時(shí)候,聊天記錄已經(jīng)被 黑客 抓包獲取 ,然后賣給競爭對手了。。(只是舉個(gè)例子,微信的加密是相當(dāng)安全的,微信很多的通訊還是用的HTTP,但是就算你拿到他們數(shù)據(jù),也是無法解密的。這里舉例用微信,只是為了方便大家理解。免費(fèi)wifi確實(shí)有可能是黑客設(shè)的坑,新聞上經(jīng)常報(bào)道)。所以不要讓自己的數(shù)據(jù)裸奔。。。

    12、代碼調(diào)試信息安全管理

    代碼方面:

    1、在release環(huán)境下 NSLog不要打印日志 否則iOS系統(tǒng)日志里都可以查看到,在.pch文件中加下面的幾行代碼就可以解決。很早大家都這么做了。

    現(xiàn)在很多APP的部分頁面開始使用 Swift,在Swift 文件中是允許用 NSLog 的語法來打印,但是 不要這么做,因?yàn)?這樣 就會導(dǎo)致這段代碼在 release環(huán)境 中也可以正常輸出。通過 PP助手、iTools,可以直接 查看 iOS的系統(tǒng)日志。也可以直接 通過Xcode-Window-Devices - 點(diǎn)最下面的向上的小箭頭,來看日志。

    所以Swift中打印 還是用 print吧。

    2、AFNetworking 的 allowInvalidCertificates 屬性 要設(shè)置成false,validatesDomainName屬性 設(shè)置成true。否則 HTTPS通信就可以被解密。這塊涉及到AFnetworking 去年的通信漏洞 就不詳述了。

    但是一般開發(fā)的測試環(huán)境的HTTPS 不是CA頒發(fā)的,而是自簽名證書,訪問的也不是域名,而是IP。所以可以在測試環(huán)境 忽略證書和域名。

    以上內(nèi)容希望對您有所幫助,想要學(xué)習(xí)通訊安全小知識的朋友,接下來我們會講解手機(jī)下載網(wǎng)絡(luò)資源需注意哪些危險(xiǎn)隱患,歡迎關(guān)注佰佰安全網(wǎng)。


    責(zé)任編輯:鄒蘭

    • 評論
    • 評論
    以下網(wǎng)友言論不代表佰佰安全網(wǎng)觀點(diǎn) 發(fā)表

    相關(guān)閱讀

    為更好的為公眾說明安全知識的重要性,本站引用了部分來源于網(wǎng)絡(luò)的圖片插圖,無任何商業(yè)性目的。適用于《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》第六條“為介紹、評論某一作品或者說明某一問題,在向公眾提供的作品中適當(dāng)引用已經(jīng)發(fā)表的作品”之規(guī)定。如果權(quán)利人認(rèn)為受到影響,請與我方聯(lián)系,我方核實(shí)后立即刪除。

    小編推薦