安全测试


一、安装包测试

             1.1、关于反编译

                     (解决:代码混淆)

            1.2、关于签名

                   (解决:要在发布前校验一下签名使用的key是否正确,以防被恶意第三方应用覆盖安装)

            1.3、完整性校验:测试完成到最终交付过程中文件损坏

                    (解决:检查文件的md5值,一般可以通过自动化做校验。)

            1.4、权限设置检查:去掉没必要的访问权限

                    (解决:Android:检查manifest文件,iOS:扫描代码)

二、敏感信息测试 :cookie、账号、密码等

(解决:SQLite数据库文件和SharedPreferances配置文件是否泄漏敏感信息或反编译APP,获取数据存储过程——>存储路径——>敏感数据文件)

三、软键盘劫持:第三方键盘劫持账号、密码

(解决:对敏感的输入框检查,看是否支持第三方输入法,一般建议使用应用内的软键盘)

四、账户安全

(解决:密码是否明文存储、密码是否明文传输、账户锁定(输入错误过多)、同时会话通知(通知客户账号被其他地方使用),注销机制(注销后不能调用任何接口))

五、数据通信安全

(解决:关键数据(账号、密码)是否散列或加密、关键连接是否使用安全通信,例如HTTPS、是否对数字证书合法性进行验证(Fiddler工具模拟中间人攻击方法测试)、是否校验数据合法性(对数据进行数字签名并在客户端进行校验))

六、组件安全测试:Android平台各个组件是否能被 外部应用恶意调用

(解决:drozer工具)

七、服务端接口测试

7.1、SQL注入

(解决:1.永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等,验收是否包含关键字,如:WHERE,EXEC,DROP等。

               2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。

               3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

              4.不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。

              5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。)

7.2、XSS跨站脚本攻击

(解决:1.不要在允许位置插入不可信数据

                 2.在向HTML元素内容插入不可信数据前对HTML解码

                3.在向HTML常见属性插入不可信数据前进行属性解码

                4  .在向HTML JavaScript Data Values插入不可信数据前,进行JavaScript解码

                5.在向HTML 样式属性值插入不可信数居前,进行CSS解码

              6.在向HTML URL属性插入不可信数据前,进行URL解码)

7.3、CSRF跨站请求伪造

(解决:1.服务端防御

                  1.1 验证HTTP Referer字段:在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址,访问一个安全受限页面的请求必须来自于同一个网站。

                   1.2 在请求地址中添加token并验证:系统开发者可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

                   1.3 在HTTP头中自定义属性并验证:通过XMLHttpRequest这个类,给所有该类请求加上csrftoken这个HTTP头属性,把token值放入其中。这种方法,请求的地址不会被记录到浏览器的地址栏,也不用担心token会通过Referer泄露到其他网站。

            2.其他防御方法

                      2.1.CSRF攻击是有条件的,当用户访问恶意链接时,认证的cookie仍然有效,所以当用户关闭页面时要及时清除认证cookie,对支持TAB模式(新标签打开网页)的浏览器尤为重要。

                      2.2.尽量少用或不要用request()类变量,获取参数指定request.form()还是request. querystring (),这样有利于阻止CSRF漏洞攻击,此方法只不能完全防御CSRF攻击,只是一定程度上增加了攻击的难度。)

7.4、越权访问

            1.水平权限

                   解决:从用户的加密认证cookie中获取当前用户id

            2.垂直权限

                    解决:每个页面的加载之前进行权限验证

----------------------------------------------------------------------------------------------------------------------

来源

APP安全测试

http://www.jianshu.com/p/d79a30a7ed94 

SQL注入原理和防范

http://blog.csdn.net/stilling2006/article/details/8526458/

XSS跨站脚本攻击防御

http://netsecurity.51cto.com/art/201211/364936.htm

http://netsecurity.51cto.com/art/201111/304226.htm

CSRF跨站请求伪造

http://netsecurity.51cto.com/art/201308/407554.htm

越权操作

http://blog.csdn.net/tanzhen1991910/article/details/53220593

----------------------------------------------------------------------------------------------------------------------------

附录

1.软件权限

1)扣费风险:包括短信、拨打电话、连接网络等。

2)隐私泄露风险:包括访问手机信息、访问联系人信息等。

3)对App的输入有效性校验、认证、授权、数据加密等方面进行检测

4)限制/允许使用手机功能接入互联网

5)限制/允许使用手机发送接收信息功能

6)限制或使用本地连接

7)限制/允许使用手机拍照或录音

8)限制/允许使用手机读取用户数据

9)限制/允许使用手机写入用户数据

10)限制/允许应用程序来注册自动启动应用程序

2.数据安全性

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

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

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

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

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

6)党建敏感数据输入到应用程序时,其不会被存储在设备中。

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

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

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

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

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

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

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

14)能合理的处理出现的错误。

15)意外情况下应提示用户。

3.通讯安全性

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

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

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

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

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

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

4.人机接口安全测试

1)返回菜单应总保持可用。

2)命令有优先权顺序。

3)声音的设置不影响使用程序的功能。

4)应用程序必须能够处理不可预知的用户操作,例如错误的操作和同时按下多个键。

罗小宇 | 技术中心 | 测试工程师

深圳卡派科技有限公司

地址:深圳市南山区高新中一道2号长园新材料港4栋2层 |http://www.capech.cn

你可能感兴趣的:(安全测试)