随着互联网发展,APP应用的盛行,最近了解到手机APP相关的安全性测试,以webview为主体的app,站在入侵或者攻击的角度来说,安全隐患在于http抓包,逆向工程。
目前大部分app仍是走的http或者https,因此防http抓包泄露用户信息以及系统自身漏洞是必要的,经过抓包当你查看一个陌生用户信息时,一些手机号,qq等信息页面上应该不显示的,但这些信息不显示并不表明服务器没有下发,好多都是客户端限制的,经过抓包,彻底能够查看到陌生用户的app。再如好多发帖,push消息的应用,若是没有消息有效性的验证,抓到包以后篡改消息,服务器一点反应都没,这就会留有极大的隐患。逆向工程对于Android就很好理解了,反编译,修改或者插入本身的代码,以达到相应目的。
安全性测试策略
a/用户隐私
检查是否在本地保存用户密码,不管加密与否
检查敏感的隐私信息,如聊天记录、关系链、银行帐号等是否进行加密
检查是否将系统文件、配置文件明文保存在外部设备上
部分须要存储到外部设备的信息,须要每次使用前都判断信息是否被篡改web
本地存储数据能够查看看应用的SharedPreferences文件和数据库文件中的数据(root后在应用安装目录内,或者查看外部存储中有没有写入敏感数据)。
b/文件权限
检查App所在的目录,其权限必须为不容许其余组成员读写
c/网络传输
检查敏感信息在网络传输中是否作了加密处理,重要数据要采用TLS或者SSLshell
http请求默认是明文的,若是安全验证和加密机制很烂,经过网络嗅探扫描,很容易被猜到和模拟请求,也可能被注入。
d/运行时解释保护
对于嵌有解释器的软件,检查是否存在XSS、SQL注入漏洞
使用webiew的App,检查是否存在URL欺骗漏洞
e/Android组件权限保护
禁止App内部组件被任意第三方程序调用。
若须要供外部调用的组件,应检查对调用者是否作了签名限制
f/升级
检查是否对升级包的完整性、合法性进行了校验,避免升级包被劫持
g/应用自身安全性
对某个应用进行逆向,看反编译后的代码有没有敏感信息暴露。反编译后对代码修改,插入劫持代码后从新打包,若是存在这种漏洞,对用户和开发者都构成极大的威胁。数据库
要求对应用进行加密,防止静态破解,盗取源码,而后嵌入恶意病毒、广告等行为再利用工具打包、签名,造成二次打包应用
h/界面截取安全
经过adb shell命令或第三方软件获取root权限,在手机界面截取用户填写的隐私信息,随后进行恶意行为。
对移动应用中,安全性测试占据App测试的比重愈来愈重要,用户信息等的安全性也是决定着一款应用是否能成功,就更不用说手机银行,金融证劵类App对安全的高度重视。服务器