注:原文---念茜的博客
我們把自己的程序發(fā)布到app store,但是不能保證每一個(gè)用戶都是從app store下載官方app,也不能保證每一個(gè)用戶都不越獄。
換句話說,我們無法保證程序運(yùn)行環(huán)境在MAC管控策略下就絕對的安全。
所以,在有些情況下,尤其是和錢有關(guān)系的app,我們有必要在和服務(wù)器通信時(shí),讓服務(wù)器知道客戶端到底是不是官方正版的app。
何以判斷自己是不是正版app呢?hackers們破解你的app,無非就2個(gè)地方可以動(dòng),1個(gè)是二進(jìn)制,1個(gè)是資源文件。
二進(jìn)制都重新編譯過了自然肯定是盜版……
有些低級的hackers喜歡修改人家的資源文件然后貼上自己的廣告,或者給用戶錯(cuò)誤的指引……修改資源文件是不需要重新編譯二進(jìn)制的。
因此,我們有必要在敏感的請求報(bào)文中,增加正版應(yīng)用的二進(jìn)制和資源文件的標(biāo)識(shí),讓服務(wù)器知道,此請求是否來自正版的未經(jīng)修改的app。
在沙盒中,我們可以讀到自己程序的二進(jìn)制,也可以讀到資源文件簽名文件,這兩個(gè)文件都不算大,我們可以對其取md5值然后以某種組合算法得到一個(gè)標(biāo)記字符串,然后發(fā)給服務(wù)器。
我封裝了相關(guān)文件的讀取地址:

md5方法:

這樣做就100%安全了嗎?
答案是:不……
所謂魔高一尺,道高一丈,不過也能阻止一些低級的hack手段了~