android 开发安全简单想法

一、数据安全

1、数据加密

       本地加密(使用加密算法,如MD5、BASE64、AES加密等,数据将不再是明文显示),另外可定期改变加密算法:

将核心数据通过服务器存储,客户端每次使用时将核心数据读下来才能用,否则会出错。
这个核心数据每一定周期(比如一个月)改变一次加密解密算法,客户端当无法处理算法时,进行apk更新,也就是每月更新一次apk

2、 传输加密(https传输)

        HTTPS可以视为HTTP的安全版本(Secure),其安全基础基于SSL协议(Secure Socket Layer,安全套接字层)。HTTPS在HTTP的基础上添加了一个加密和身份验证。其默认端口是443.对于一些对数据安全要求比较高的网络应用,比如网络支付,网上银行,都是采用HTTPS通信机制

HTTPS URL连接的方式访问HTTPS服务器与HTTP URL访问HTTP服务器的方式基本相同。用到的类:HttpsURLConnection。

 

二、源码安全

     代码混淆:

         经过混淆处理,apk被反编译时,项目类名,方法名完全混乱,很大程度提高了代码可识别度

具体方法及注意问题如下:

新建一个项目的时候,会自动生成project.propertiesproguard-project.txt文件,无需自己新建

如果需要对项目进行全局混码,只需要进行一步操作:

project.properties的中

“#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”“#”去掉就可以了。

如果有一些代码不能被混淆,比如需要加入了so文件,需要调用里面的方法,那么调用JNI访问so文件的方法就不能被混码。在导出的时候,可能不会报错。但是在手机上运行的时候,需要调用so文件的时候,就会报某某方法无法找到。这个时候就需要用到proguard-project.txt

在新版本的代码混淆,已经变得很智能,不过引入的第三方jar还是需要手动编写混淆规则

图片处理:

关于图片处理的问题,例如Logo这类的小图不要以文件方式存储,可以存储到数据库中(存储路径或者存储图片二进制数据流),或者将Logo以编码方式存于静态对像中

核心代码处理:

       将核心代码存于服务器上,每次运行时读取服务器上的代码加密字符串,解密后,通过eval方式转为可执行代码。

伪加密

       APKPC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。对PC端来讲伪加密的APK没法被解包无法被反编译,但是对android系统来说它完全不会影响正常的安装运行(该方法支持4.2以前的系统,在4.2以后的系统运行会报错,)

伪加密的原理:读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1  反伪加密就是把1改成0就可以了)。

防二次打包

       获取 Signature, 根据Signature计算md5和sha1信息,获取签名公钥信息,在项目中多处验证打包的签名与真正的签名(加密后)是否一致,一致就继续运行,不一致则关闭程序,

 

通过以上多种方法处理再proguard后,即使反编译回去,代码可识别度大大提高,源码不会完整,也不可能随便改Logo处理。 

第三方加密平台

         提供更加完善的加密方法(dex加密,高级混淆等等)。目前比较流行的第三方平台有:爱加密,360加固保,娜迦等…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值