思考的过程很重要
思考的过程很重要
思考的过程很重要

Q:如何保证移动端的安全?

代码安全

  • 混淆java代码

    安卓打release包一般都会混淆代码,可以提高apk的反编译破解成本。
  • 加固安装包

    使用应用商店提供的加固程序进行加固,可以防止被反编译修改代码后二次打包。
  • 逻辑写进native

    将java逻辑代码使用C/C++重写,最终编译成.so文件,破解成本较高。

数据安全

  • 保存数据加密

    敏感数据不明文保存。防止root设备后读取数据。
  • 验证安卓环境root、xposed

    运行时检测设备是否已经root、是否安装xposed、Magisk等框架。

生物信息安全

  • 使用手机系统提供的指纹、人脸识别API验证,保证使用者是手机拥有者本人。

  • 二次验证、短信验证

协议安全

  • 传输内容加密

    明文传输不可取。

  • 接口名混淆

    稍微比铭文传输好点吧,通过界面和数据比对,还是比较容易破解的。

  • 接口合法性添加签名验证

    对于恶意拦截,修改数据后重新发送的请求,服务器可以校验其参数合法性,保障用户安全。

  • HTTP->HTTPS

    HTTPS = HTTP + SSL/TLS,保证传输过程中的安全,解决了中间人攻击的问题。

    注:如果在使用HTTP协议被攻击后,换用HTTPS需要修改协议。

  • WS->WSS

    在需要服务器push的时候,一般用WebSocket,而Websocket和服务器建立连接是HTTP的,和HTTPS类似,WSS是通过HTTPS建立连接的Websocket,同样防止中间人攻击。

  • 更进一步,CDN(略超纲)

    使用CDN,解决的是服务器的安全问题。通过隐藏真实ip,可防止服务器被DDOS攻击。一般来说,CDN支持HTTP、HTTPS、WSS,不考虑流量可以所有请求都用。
    否则,需要退一步做动态ip切换,在被攻击时切换ip,只在获取服务器地址的请求上使用CDN。