你还不知道的APP安全测试项总结!

一、安装包测试

1.1、关于反编译

目的是为了保护公司的知识产权和安全方面的考虑等,一些程序开发人员会在源码中硬编码一些敏感信息,如密码。而且若程序内部一些设计欠佳的逻辑,也可能隐含漏洞,一旦源码泄漏,安全隐患巨大。

为了避免这些问题,除了代码审核外,通常开发的做法是对代码进行混淆,混淆后源代码通过反软件生成的源代码是很难读懂的,测试中,我们可以直接使用反编译工具(dex2jar和jd-gui工具)查看源代码,判断是否进行了代码混淆,包括显而易见的敏感信息。

1.2、关于签名

这点IOS可以不用考虑,因为APP stroe都会校验。但Android没有此类权威检查,我们要在发布前校验一下签名使用的key是否正确,以防被恶意第三方应用覆盖安装等。可使用下列命令检查:

jarsigner -verify -verbose -certs apk包路径
若结果为“jar 已验证”,说明签名校验成功。
 

1.3、完整性校验

为确保安装包不会在测试完成到最终交付过程中因为知足者趾问题发生文件损坏,需要对安装包进行完整性校验,通常做法是检查文件的md5值,而且一般可以通过自动化做校验。

1.4、权限设置检查

一般用户对自己的隐私问题十 分敏感,因此,我们需要对APP申请某些特定权限的必要性进行检查,如访问通讯录等。对于没有必要的权限,一般都建议开发 直接支除。

Android:直接检查manifest文件来读取应用所需要的全部权限,并结合需求进行校验此权限是否为必须的。manifest文件的修改也需要关注,在增加新权限前需要进行评估。

IOS:没有类似manifest文件来查看,IOS的用户权限只有在用户使用APP到了需要使用的权限时,系统才会弹出提示框,提示用户当前APP需要访问照片、联系人列表等组件。我们可以扫描代码来查看项目工程中有哪些权限设置。通过搜索关键类名,如通讯录一般需要访问ABAddressBookRef,照片是UIImagePickerController等。如果是纯黑盒测试,则必须覆盖到所有代码路径才能保证没有遗漏,也可使用代码覆盖率测试判断是否覆盖。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

二、敏感信息测试

数据库是否存储敏感信息,某些应用会把cookie类数据保存在数据库中,一旦此数据被他人获取,可能造成用户账户被盗用等严重问题,测试中在跑完一个包含数据库操作的测试用例后,我们可以直接查看数据库里的数据,观察是否有敏感信息存储在内。一般来说这些敏感信息需要用户进行注销操作后删除。如果是cookie类数据,建议设置合理的过期时间。

日志是否存在敏感信息,一般开发在写程序的过程中会加入日志帮助高度,所有可能会写入一些敏感信息,通常APP的发布版不会使用日志,但也不排除特殊情况。

配置文件是否存在敏感信息,与日志类似,我们需要检查配置文件中是否包含敏感信息。
  

三、软键盘劫持

如果用户安装了第三方键盘,可能存在劫持情况,对此,我们在一些特别敏感的输入地方可以做检查,例如金融类APP登录界面的用户名密码输入框等,看是否支持第三方输入法,一般建议使用应用内的软键盘。
  

四、账户安全

4.1、密码是否明文存储在后台数据库,在评审和测试中需要关注密码的存储。

4.2、密码传输是否加密,测试中我们需要查看密码是否被 明文传输,如果是HTTP接口,我们可以使用FIddler等工具直接查看。

4.3、账户锁定策略。对于 用户输入错误密码次数过多的情况,是否会将账户临时锁定,避免被暴力破解,

4.4、同时会话情况。一些应用对同时会话会有通知功能,这样至少可以让用户知识他的账户可能已经被泄漏了。在一定程度上能免提升用户体验。

4.5、注销机制。在客户端注销后,我们需要验证任何的来自该用户的,需要身份验证的接口调用都不能成功。
  

五、数据通信安全

5.1、关键数据是否散列或加密。密码在传输中必须是加密的,其他敏感信息传输前也需要进行散列或者加加密,以免被中间节点获取并恶意利用

5.2、关键连接是否使用安全通信,例如HTTPS。在获知接口设计后我们需要评估是否其中内容包含敏感信息,如果未使用安全通信,需要知会开发修改。?

5.3、是否对数字证书合法性进行验证。即便使用了安全通信,例如HTTPS,我们也需要在客户端代码中对服务端证书进行合法性校验。测试中可以使用Fiddler工具模拟中间人攻击方法。如果客户端对于Fiddler证书没有校验而能正常调用,则存在安全隐患。

5.4、是否校验数据合法性。在一些情况下,我们需要有方法来确保服务端下发的明文数据不被篡改。通常开发侧的实现方式是对数据进行数字签名并在客户端进行校验。我们可以模拟后台返回进行相关的测试工作。此外,对于其他一些客户端未进行数据校验的接口,我们也需要有意识地思考如果不进行校验是否会产生问题,并通过模拟后台返回验证。
  

六、组件安全测试

这里主要是指Android平台各个组件是否能被 外部应用恶意调用从而带来一些安全问题。包括Activity、Service、ContentProvider、Broadcast等等。采用的测试方法是通过使用drozer工具结合查看代码的方式,具体使用方法可查看官方文档。
  

七、服务端接口测试

主要关注服务端接口是否存在以下问题
7.1、SQL注入
7.2、XSS跨站脚本攻击
7.3、CSRF跨站请求伪造
7.4、越权访问

除了上述服务端问题外,我们还需要结合实际的需求,设计和代码,分析是否需求或设计本身就会带来安全问题。

举个例子:如一个购物的应用,下单地的流程包含两个接口,接口A返回订单详情,其中包括订单号码和金额总价。调用接口A后用户在客户端看到一个订单页面。用户点击提交后调用接口B,客户端传给接口B的参数为接口A返回的订单号码和金额总价,接口B的后台根据传给接口B的金额总价从用户账户中扣款,扣款成功后即根据订单号码发货。

这一设计有什么问题呢?那就是接口B完全信任了客户端传入的金额总价而未做校验。恶意用户可以直接调用接口B,传入伪造的金额和真实订单号,这样就能以便宜的价格购物。附录

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)应用程序必须能够处理不可预知的用户操作,例如错误的操作和同时按下多个键。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/674806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发笔记(三)平台设备驱动

文章目录 前言一、Linux的设备模型1. 总线1.1 bus_type结构体1.2 注册/注销总线 2. 设备2.1 device结构体2.2 内核注册/注销设备 3. 驱动3.1 device_driver结构体3.2 注册/注销驱动 4. attribute属性文件4.1 attribute_group结构体4.2 设备属性文件4.3 驱动属性文件4.3. 总线属…

构建高可用微服务:SpringCloud Alibaba解决方案揭秘

【前言】 随着互联网的快速发展,越来越多的企业在应用程序开发过程中选择微服务架构。微服务架构是将一个大型应用程序拆分成多个小型服务的架构模式,每个服务都具有独立的业务逻辑,并且可以独立部署、升级和扩展。 Spring Cloud Alibaba 是阿里巴巴基于 Spring Cloud 开发…

【matlab】绘图文本标注

用代码生成标注 代码 clc clear close all%创建一个球,使用地质颜色映射表: cla reset%清除当前坐标轴中的所有图像对象,同时把除position.units属性外的其他属性设为默认状态 load topo; [x y z]sphere (45); ssurface (x,y, z,facecolor,texturemap,…

深入理解feign远程调用的各种超时参数

1. 引言 在spring cloud微服中,feign远程调用可能是大家每天都接触到东西,但很多同学却没咋搞清楚这里边的各种超时问题,生产环境可能会蹦出各种奇怪的问题。 首先说下结论: 1)只使用feign组件,不使用ribbion组件&…

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好,我是 Hello 阿尔法,有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动,本文…

图片怎么快速转换大小?在线将图片改小的方法

目前在网上平台上传图片时,比较常见的一个问题就是图片太大导致无法正常上传,需要调整图片大小到平台的要求后才可以正常使用。那么如何将图片压缩到需要使用的大小呢? 图片大小转换现在可以使用在线改图片大小的工具会更加的简单的快捷&…

贝锐向日葵分组策略:减少重复操作,提升管理效率

面对大数量级的IT设备,如何高效实施管理是运维的关键所在,如何快速准确的对大量的设备按需分组,则是管理精准触达的第一步。 但是,传统的分组方式应付少量设备还可行,设备数量级一旦来到上千台甚至更多时,…

数据结构——排序【上】

前言: 今天我们开始学习排序。为了方便大家理解和练习,排序一共分为两节进行讲解,在该章节中会复习学习过的排序,和讲解新的排序,还望读者能从中又好的体验。 一、冒泡排序 冒泡排序作为基础排序,在我们学…

配置网页版的SQL Developer : Oracle Database Actions

我们知道SQL Developer有三种形式: 桌面版,这个最常用命令行版,即SQLcl网页版,即SQL Developer Web,最新的名字叫Oracle Database Actions, 本文讲述3,如何配置SQL Developer网页版。 第一步…

儿童有声挂图的芯片AD156—云信通讯

有声挂图是一种结合了图像和声音的媒体形式,用户可以触发图像上的声音,从而获得与图像内容相关的音频信息。这种融合了视觉和听觉的交互方式,既满足了人们对美感和观感的需求,又提高了信息传递的效果和效率。 有声挂图作为孩子的…

SmartEDA助力精准模拟电路性能,抢占市场先机,引领行业革新

在电子工程领域,模拟电路的性能优劣直接关系到产品的竞争力和市场占有率。随着科技的飞速发展,传统的设计方法已难以满足日益增长的精度和效率要求。在这一背景下,SmartEDA作为一款高效、精准的电子设计自动化工具,正以其独特的优…

(文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略

参考文献: [1]潘虹锦,高红均,杨艳红,等.基于主从博弈的售电商多元零售套餐设计与多级市场购电策略[J].中国电机工程学报,2022,42(13):4785-4800. 1.摘要 随着电力市场改革的发展,如何制定吸引用户选择的多类型零售套餐成为提升售电商利润的研究重点。为…

三合一00

题目链接 三合一 题目描述 注意点 0 < stackNum < 2 解答思路 可以使用一个一维数组存储三个栈的元素&#xff0c;其中idx存储的是第一个数组中的元素&#xff0c;idx 1存储的是第二个数组中的元素&#xff0c;idx 2存储的是第三个数组中的元素&#xff0c;所以除…

视频剪辑软件怎么操作?5个实用的视频剪辑器分享给你

六一儿童节&#xff0c;家长们都希望记录下孩子成长的每一个精彩瞬间。 然而&#xff0c;视频剪辑往往需要花费大量的时间和精力&#xff0c;对于忙碌的家长们来说&#xff0c;这无疑是一项挑战。幸运的是&#xff0c;随着科技的发展&#xff0c;一键视频剪辑工具的出现&#…

鹏哥C语言复习——const和static

目录 const讲解 1、const 放在*的左边 2、const 放在*的右边 static讲解 1、static修饰局部变量 2、extern关键字 3、static修饰全局变量 4、static修饰函数 const讲解 const int n 10; n 0; 如上述代码&#xff0c;代码运行后会报错&#xff0c;会提示&#xff1a…

Fiink的简单学习一

一 相关大数据概念 1.1 根据时间 1.实时计算&#xff1a; 数据实时处理&#xff0c;结果实时存储 是一种持续、低时延、事件触发的任务 2.离线计算&#xff1a; 数据延迟处理&#xff0c;结果N1模式(昨天的数据今天存储) 是一种批量、高时延、主动发起的计算任务 1.2 处…

B端管理系统:深色系界面能够给用户带来什么感觉?

深色系的B端界面通常会给用户带来一种严肃、专业、稳重的感觉。这种界面设计通常会使用深色的背景和明亮的文字、图标&#xff0c;给人一种沉稳的视觉效果。 用户在使用深色系的B端界面时&#xff0c;可能会感到界面设计非常注重数据和信息的展示和分析&#xff0c;具有高度的…

Esxi_FAQ_2024.6.3

问题1-内存设置无效 问题&#xff1a; 内存设置无效: 内存预留 (sched.mem.min) 应该等于内存大小 (32768设置的内存容量) 原因&#xff1a; 是因为直通了nvme硬盘&#xff0c;在没有直通nvme硬盘时&#xff0c;不预留内存开机也不会报错。 解决&#xff1a; 需要全部预留内存…

小程序项目创建与Vant-UI引入

一&#xff0c;创建小程序项目 AppID可先用测试号&#xff1b; 模板来源选择 ’全部来源‘ &#xff0c;’基础‘ 。模板一定JS开头的&#xff1b; vant-weapp 官网 vant-Weapp 二&#xff0c;下载vant-weapp 组件 1&#xff0c;在新项目中打开 ’调试器‘&#xff1b; 2…

【大学物理实验】速通双语版

0首先&#xff0c;我们要学什么&#xff1f;outlook&#xff01; 1measurement 2system error&random error 3significant figures 4uncertainty of direct measurement and indirect measurement 5data processing 1 measurement Important points to remember&#…