一、前言

在 SDK 最近的项目中上线的包被第三方杀毒软件报出有病毒的问题,后来经过查 验发现是SDK悬浮窗动画的逻辑被检验出有病毒,最后进行了修改。事情虽然解决了,但是引起该问题的一个原因是在测试中没有安全测试,而安全测试的标准,方法都没有。因此今天将之前工作中参与过的安全测试以及从网上查阅到有关安全测试的资料 进行整理。有不足的之处,尽情谅解。

二、软件权限

1)扣费风险:浏览网页,下载,等情况下是否会扣费,一般在游戏APP,和社交APP等需要考虑这些。

2)隐私泄露风险。例如在我们安装APP应用时通常会看到“xx要读取手机通讯 录”等提示,这些提示可以提示用户拒绝接受,这些是APP测试中的测试点。

3)校验 input输入。对于APP有输入框的要对输入的信息进行校验,比如密码不能显示明文。在测试中红人馆注册时需要对input进行测试。

4)限制/允许使用手机功能接人互联网,收发信息,启动应用程序,手机拍照或者 录音,读写用户数据。这个在通信行业用的比较多,比如展讯,高通等芯片厂商,他们 在出厂芯片时要对手机各个功能进行测试。

三、代码安全性

之所以单独拿出来说,是因为在 SDK测试过程中SDK代码被第三方工具检测出游病毒代码,这样一来就会影响输入法的使用。因此在后续测试中要尝试加入安全性测 试。


四、安装与卸载安全性

1)应用程序应能正确安装到设备驱动程序上

2)能够在安装设备驱动程序上找到应用程序的相应图标。在SDK测试项目中发现 有些设备受权限的问题,无法下发图标创建快链。

3)是否包含数字签名信息。在 SDK 测试项目中基本上没有,但是在输入法打包和 主线版本上存在这样的测试。

4)安装路径应能指定

5)没有用户的允许应用程序不能预先设定自动启动

6)卸载是否安全,其安装进去的文件是否全部卸载

7)卸载用户使用过程中产生的文件是否有提示

8)其修改的配置信息是否复原

9)卸载是否影响其他软件的功能

10)卸载应该移除所有的文件

11)安装包的存放。在 SDK下载安装包的测试中我们经常会看到下载下来的包后 面有四个随机的字符串,这个的目的是为了防止第三方工具恶意删除安装包的问题。

在 SDK 测试项目中有专门针对下载安装卸载的用例,对安装的路径和下载的文件 夹路径等有相关的测试,测试结果页表明,某些手机(例如华为mate1)在删除了某个下载路径文件夹之后受权限应用不会自动创建。

五、数据安全性

1) 当将密码或其他的敏感数据输人到应用程序时,其不会被储存在设备中,同时密码也不会被解码

2) 输人的密码将不以明文形式进行显示

3) 密码,信用卡明细,或其他的敏感数据将不被储存在它们预输人的位置上

4)不同的应用程序的个人身份证或密码长度必需至少在4一8 个数字长度之间

5) 当应用程序处理信用卡明细,或其他的敏感数据时,不以明文形式将数据写到其它单独的文件或者临时文件中。以防止应用程序异常终止而又没有删除它的临时文件,文件可能遭受人侵者的袭击,然后读取这些数据信息。


6) 当将敏感数据输人到应用程序时,其不会被储存在设备中

7) 备份应该加密,恢复数据应考虑恢复过程的异常通讯中断等,数据恢复后再使用前应该经过校验

8) 应用程序应考虑系统或者虚拟机器产生的用户提示信息或安全警告

9) 应用程序不能忽略系统或者虚拟机器产生的用户提示信息或安全警告,更不能在安全警告显示前,利用显示误导信息欺骗用户,应用程序不应该模拟进行安 全警告误导用户

10) 在数据删除之前,应用程序应当通知用户或者应用程序提供一个“取消”命令 的操作

11) “取消”命令操作能够按照设计要求实现其功能

12) 应用程序应当能够处理当不允许应用软件连接到个人信息管理的情况

13) 当进行读或写用户信息操作时,应用程序将会向用户发送一个操作错误的提示信息

14) 在没有用户明确许可的前提下不损坏删除个人信息管理应用程序中的任何内容

15) 应用程序读和写数据正确。

16) 应用程序应当有异常保护。

17) 如果数据库中重要的数据正要被重写,应及时告知用户

18) 能合理地处理出现的错误

19) 意外情况下应提示用户

20) HTTP、HTTPS覆盖测试。在测试中我们经常会遇到与请求的加密解密测试, 以确保产品的安全性。

六、角色管理 角色管理也属于软件权限的一种,之所以单独拿出来是因为角色管理是web端测试

中一个非常重要的测试点,尤其是对于一些军工产品,对角色管理的要求很严格。在venus的设备管理系统上就缺乏这样的角色管理的限制,比如借出的手机任何人都可以归还等细节(之前在测试设备管理系统时已经以bug的方式提交),如果有恶意破坏者 那么数据将被整乱。


七、通讯安全

1)在运行其软件过程中,如果有来电、SMS、EMS、MMS、蓝牙、红外等通讯或 充电时,是否能暂停程序,优先处理通信,并在处理完毕后能正常恢复软件,继续其原 来的功能

2)当创立连接时,应用程序能够处理因为网络连接中断,进而告诉用户连接中断 的情况

3)应能处理通讯延时或中断

4)应用程序将保持工作到通讯超时,进而发送给用户一个错误信息指示有连接错误

5)应能处理网络异常和及时将异常情况通报用户

6)应用程序关闭或网络连接不再使用时应及时关闭)断开 


八、人机接口安全性


在实际场景中,用户的行为操作是不固定的,因此我们要尽可能多的去想一写场景。

1)异常下载。异常下载指的同时下载多个apk。下载不同安装包程序,比如在之前的mini浏览器中,下载exe文件会导致程序崩溃;在发送push时发送除了jpg和png以 外的图片会导致无法发送通知。

2)异常点击。在测试输入法时,我们会测试同时按下多个键看输入法是否会崩 溃。

3)菜单可用。在 APP 中有好多菜单,要保证每个菜单都可用,不出现崩溃。