概述
最近新接手了一个新的金融项目,进行二次开发,我只想说代码质量真是不怎么好,全部的代码都写在Activity里面,分层不是很清晰,但是每个项目都有值得学习的地方,给了我一个星期的时间来熟悉代码,我现在就来说下做了几个金融类项目,其中最重要的网络安全问题。
项目1:
前面几个项目网络请求都没有做网络传输过程的加密,那个时候是没有安全意识,后台也没有提出网络传输过程需要加密,所以只做了简单的token验证,android端也没有对账户加入手势进入的功能,所以用户的信息完全暴露出来了,如果有人刻意劫持中间传输过程的数据,就可以拿到数据,做一些事情了。
项目2:
项目2的时候数据处理就感觉进阶了一个过程,这也是我安全意识提高的一个过程,这个项目使用后台给的公钥进行了加密,采用了HTTP+SSL方式进行了数据传输,在body部分,加入了签名的概念,使用MD5+特定令牌字段的方式对body里面的数据进行加密,但是只在签名过程进行了加密,在请求体里的其他数据没有进入另外的处理。这时候感觉这个项目的安全性还蛮好的。Android端也加入了进入手势,对资金的安全查看权限也提高了一个档次。
项目3:
项目3就是这个二次开发项目,这个项目的代码质量不敢苟同,但是对网络数据的处理,也是我收益蛮多的,get到了新的知识点,简直就是美滋滋。该项目采用了AES加密的方式,但是我没有看到HTTP+SSL+证书的形式,但是它对网络的数据(body内容)进行了AES加密,然后用MD5又进行了一次加密,Android端对获取的数据要用AES进行解密,才能看到正常的json串,对本地数据的处理也采用了AES才会存储到本地,这个是我之前没有想到的方面。
总结:
通过做了若干个Android端的项目,我对网络安全有了大致的体会,感觉下次讨论前后端网络接口的时候,这些可以整理起来用到下个项目当中去,这是一个不断迭代的过程,反正每次看到新东西的感觉都是特别爽。但是过分的设计代码架构,你会发现别人看你代码可能要花点功夫,这个我深有体会。