總的來(lái)說(shuō)哑了,還是要看開(kāi)發(fā)者比較在意哪方面的安全赘方,才好考慮如何防護(hù):
1、想要保證程序中的信息不被截取
幾乎是不可能的弱左,因?yàn)榧词乖偌用苷福芪囊部傄兂擅魑墓I(yè)務(wù)邏輯來(lái)使用,攻擊者只要盯住這個(gè)點(diǎn)就能達(dá)到目標(biāo)拆火;
2跳夭、想保護(hù)服務(wù)器的資源
客戶端在相當(dāng)程度上只是一個(gè)UI展現(xiàn),即使被破解也不是那么重要的们镜,真正重要的是服務(wù)器端的資源抬探,那么就要在網(wǎng)絡(luò)層進(jìn)行防護(hù)了。現(xiàn)在大家都比較喜歡用http足陨,而且都集中喜歡使用AF垫毙、ASI等幾個(gè)開(kāi)源庫(kù),逆向者只要盯住這幾個(gè)口胞皱,就能把來(lái)往的request+response全部獲取邪意,進(jìn)而可以仿制一個(gè)客戶端,此時(shí)服務(wù)器的資源也就全面開(kāi)放了反砌。同樣的雾鬼,使用AsyncSocket也是一回事。
此時(shí)有3種防護(hù)措施:
1)服務(wù)器控制宴树,不允許同一IP/客戶端頻繁抓取數(shù)據(jù)策菜;
2)對(duì)url加上token、timestamp酒贬,甚至url編碼又憨,雖然碰上高手還是不能100%安全,但是破解者想要達(dá)到目的锭吨,就需要考慮付出的精力是不是值得了蠢莺;
3)傳輸數(shù)據(jù)加密零如,并且將加解密的代碼層級(jí)加深祸憋,尤其是放到C或block函數(shù)中,這樣又將安全等級(jí)提高了一級(jí)巍沙。
3、想保護(hù)程序不被偽造或克隆
克隆/偽造其實(shí)是件非常容易的事务甥,甚至都不需要太多逆向工作,只要能把網(wǎng)絡(luò)請(qǐng)求搞定,剩下的就是代碼量编矾、以及是否比被仿者做的更好的問(wèn)題了碘菜。
總的來(lái)說(shuō)仰坦,客戶端沒(méi)太多可保護(hù)的空間,它應(yīng)該就是個(gè)業(yè)務(wù)展現(xiàn)和數(shù)據(jù)解析的工具,與其花精力想防這個(gè)防那個(gè)拦盹,不如把精力放在網(wǎng)絡(luò)接口的保護(hù)上恬口,尤其是加解密代碼提取到C或block中。
以上只是筆者個(gè)人的一些經(jīng)驗(yàn),希望大家能多多補(bǔ)充。
附:微信的安全防護(hù)措施,筆者認(rèn)為是比較值得學(xué)習(xí)的澡匪,他們的步驟是:
1、不在業(yè)務(wù)表現(xiàn)上做太多無(wú)用功
除了代碼結(jié)構(gòu)比較龐大之外褒链,微信沒(méi)有做特別的動(dòng)作唁情;
2、服務(wù)器控制
所有的決斷性的動(dòng)作由服務(wù)器控制碱蒙,幾乎不可能靠通過(guò)篡改客戶端的代碼來(lái)獲取更大的權(quán)限荠瘪。筆者曾經(jīng)針對(duì)每天20個(gè)漂流瓶的限制嘗試擴(kuò)大權(quán)限,但是即使把本地代碼邏輯放開(kāi)赛惩,在超過(guò)20個(gè)瓶子之后哀墓,再撈回來(lái)的永遠(yuǎn)是海星,顯然是服務(wù)器控制住了喷兼。
當(dāng)然篮绰,本地LBS坐標(biāo)是無(wú)法被服務(wù)器控制的,這也就是坐標(biāo)穿越插件能起作用的根本原因季惯。
3吠各、網(wǎng)絡(luò)數(shù)據(jù)加密
通過(guò)對(duì)網(wǎng)絡(luò)接口的攔截,雖然能得到socket收取的二進(jìn)制數(shù)據(jù)勉抓,首先是無(wú)法直接解密贾漏,其次是從那許多代碼中找解密代碼非常費(fèi)勁,縱然加解密都能搞定藕筋,想偽造也十分麻煩纵散,packet中包羅了相當(dāng)多的信息,我估計(jì)就是把他們的代碼開(kāi)放給開(kāi)發(fā)者,想理清這一部分都不是一件輕松的事情伍掀。
4掰茶、登錄唯一性
即使能夠偽造微信的請(qǐng)求,一旦登錄獲取數(shù)據(jù)蜜笤,原賬號(hào)就會(huì)被踢下線并且得到通知濒蒋,這本身就是一個(gè)安全警告,說(shuō)起來(lái)也算是服務(wù)器控制把兔。
如果開(kāi)發(fā)者對(duì)于安全性的設(shè)計(jì)都能達(dá)到微信這一級(jí)別沪伙,安全級(jí)別就是比較值得信賴的了,但是這也不表示就解不出來(lái)垛贤,只要逆向者的水平達(dá)到熟練程度以上(自然是越高越好)焰坪,并且愿意投入大量精力在某個(gè)他們認(rèn)為值得的app上,幾乎都能攻的下來(lái)聘惦。
作者:Exia_L
鏈接:http://www.reibang.com/p/c3b41c3f6692
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有某饰。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處善绎。