手机App安全性测试初探

  

  

   目前手机App测试仍是以发现bug为主,主要测试流程就是服务器接口测试,客户端功能性覆盖,以及自动化配合的性能,适配,压测等,对于App安全性测试貌似没有系统全面统一的标准和流程,其实安全性bug也能够是bug的一种,只不过更加隐秘,难以发现,尤为针对于手机App。近期时间比较充裕,研究了一下安全性相关的东西,并对于咱们自身的产品测试了一下(更主要的目的是游戏做弊刷分),发现了很多问题,总结一下。
  个人理解,包括以webview为主体的app,站在入侵或者攻击的角度来说,安全隐患在于http抓包,逆向工程。谈这以前先讲讲webview相关的app,前一段时间有个曝工资的软件很火,但有查询次数的限制,抓包研究了一下,发现其主要仍是webview,经过抓包详细分析,才明白他记录查询次数的手段,每个用户都会分配一个id,以及一个表明查询次数count以cookie的形式保存到本地,经过维护cookie达到限制查询次数的目的,因此清除cookie就能够无限制的查询了,我的以为,webview相关的app安全性测试应该仍是web测试那一套,xss攻击,sql注入等(没搞过web安全测试,仅推测)。
  大部分app仍是走的http或者https,因此防http抓包泄露用户信息以及系统自身漏洞是必要的,毕竟像腾讯那种经过自身通讯协议增长安全性的仍是少数的(抓过微信和qq的没抓着,不知道有没有相关工具能够抓手机tcp的包)。既然有接口测试为何还须要单独对客户端进行抓包验证安全性呢?这么说吧,接口测试其实最主要的验证接口逻辑,可用性,边界值,异常检查,但并不能预先保证客户端调用不出问题,一个针对多个app抓包都发现的问题能够说明:抓了好多社交性app,发现对于用户资料隐私泄露仍是很严重的,当你查看一个陌生用户信息时,一些手机号,qq等信息页面上应该不显示的,但这些信息不显示并不表明服务器没有下发,好多都是客户端限制的,经过抓包,彻底能够查看到陌生用户的app。再如好多发帖,push消息的应用,若是没有消息有效性的验证,抓到包以后篡改消息,服务器一点反应都没,这就会留有极大的隐患。
  至于逆向工程这点,对于android就很好理解了,反编译,修改或者插入本身的代码,以达到相应目的。真见过几个没有代码混淆的app,包括咱们本身的以及大名鼎鼎snapchat,记得有个游戏特搞笑,游戏主题是C#写得,结果java的代码混淆了,C#的代码没有,修改了几个参数值,插了几段本身的代码,就做弊成功了。尤为好多开放平台的游戏,经过开放平台sdk文档,再加上反编译后些许信息,即便代码混淆了,也能推测出好多东西。这些都是安全性隐患。
以上这些只是最近一段时间对于手机app安全性测试的一点认识,很肤浅,安全性测试对于测试人员素质要求仍是很高的,尤为好多都是经验性的东西,只有经过不断增长经验,才能更好的作好测试。java