你还不知道的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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习入门-第3章-神经网络

前面的待补充 3.6 手写数字识别 3.6.1 MNIST 数据集 本书提供了便利的 Python 脚本 mnist.py ,该脚本支持从下载 MNIST 数据集到将这些数据转换成 NumPy 数组等处理(mnist.py 在 dataset 目录下)。 使用 mnist.py 时,当前目录必须…

PolygonalSurfaceContourLineInterpolator 多边形交互器

1. 效果: 2.简介: 可以实现在多边形上进行交互,选择;在多边形曲面上实现轮廓点的交互绘制。 该类的使用需要结合 vtkPolygonalSurfacePointPlacer 类,定位点的功能也就是拾取器。 前提:输入的多边形曲面…

python第五次作业

1.请实现一个装饰器,每次调用函数时,将函数名字以及调用此函数的时间点写入文件中 # 导入datetime模块,用于获取当前时间并格式化输出 import datetime# 定义一个装饰器工厂函数log_funcName_time,它接受一个参数time def log_fu…

军用电源性能测试有哪些测试项目?需要遵循什么标准?

为了确保军用电源在极端条件下能够正常工作,必须对其进行一系列严格的性能测试。这些测试不仅包括效率、电压调整率和负载调整率等基本参数的测试,还包括动态响应能力、绝缘电阻、耐压测试、温度系数以及高低温循环等综合性能的评估。 测试项目 效率 电压…

react-native运行程序 出现 Application XXX is waiting for the debugger

1.重启adb: adb kill-server、 adb start-server. 2、确定USB调试模式是否开启,如果已经开启了,关闭了重新打开一下 3.选择调试模式并关闭等待调试程序

MobaXterm两种方式上传下载文件

1.图形化操作 下载 这里的图像化操作有别于windows系统,双击无法打开,直接输入文件路径进行查找。选中下载文件,然后3图标会高亮点击下载图标选择文件下载到的位置 上传 依旧使用上图 , 4. 上传按钮,可以选择文件&a…

【机器学习】逻辑回归:原理、应用与实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 逻辑回归:原理、应用与实践引言1. 逻辑回归基础1.1 基本概念1.2 Sig…

Tensorflow入门实战 P02-彩色图片分类

目录 1、序言 2、主要代码 3、运行结果展示 (1)展示cifar10里面的20张图片 (2)预测的图片 (3)模型评估 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K…

Office在试图打开文件时遇到错误

如果是PPT、Excel,解决方法大体一致。 打开word文件,遇到如下图所示的报错信息。 解决办法: 法1(针对单一文件): 文件右键-【属性】-勾选【解除锁定(K)】 法2(一劳永逸,安全性自…

【Spring Cloud】微服务日志收集系统-ELK+Kafka

目录 任务背景本文相关文件资料Elasticsearch特性 LogstashKibanaELKELK的缺点引入消息中间件 ELKKafkaKafka概念 ELKKafka环境搭建1.将安装素材上传至服务器 cd /usr/local/soft2.防止Elasticsearch因虚拟内存问题启动失败3.创建镜像li/centos7-elasticsearch4.创建容器5.验证…

大模型备案项目补贴政策一览【保持更新】

大模型项目、AI类项目、大模型备案通过后等一篮子财政补贴政策 上海市 加快创新体系构建 1. 提升自主创新水平:对引领大模型发展或取得颠覆性突破的项目,最高给予1000万元补贴支持。 2. 加强算力资源保障:实施算力伙伴计划,对…

学生信息管理系统C++

设计目的 使学生进一步理解和掌握课堂上所学的面向对象C编程知识,巩固和加深学生对C面向对象课程的基本知识的理解和掌握。掌握C面向对象编程和程序调试的基本技能,学会利用C语言进行基本的软件设计,着重提高运用C面向对象语言解决实际问题的…

kali系统baopoWiFi密码

kali系统baopoWiFi密码,仅供学习 取决强大的密码字典,如果别人密码设置的足够安全,也无法破解成功,并不是100%破解 一、准备一个无线网卡,需要免驱动,最好知道频率2.4HGZ还是5.0GHZ 二、插上USB接口,vmware模拟器选择连接虚拟机 三、输入命…

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

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

基于数据驱动的自适应性小波构造(MATLAB)

以地震领域为例,时频变换能够刻画地震资料的时频特征,进而辅助地质构造解释。在各种时频分析工具中,连续小波变换CWT是描述地震资料时频特征的常用工具。选择合适的基小波是CWT的关键问题。对于不同类型的信号前人有针对性的设计了许多基小波…

基于单片机的超声波倒车雷达设计

摘 要:文 章设计了一种基于单片机的超声波倒车雷达系统,以 AT89C51 型单片机作为控制核心,集距离测量、显示,方位显示和危险报警于一体,以提高驾驶者在倒车泊车时的安全性和舒适性。本设计采用 Keil 软件对系统程序…

Linux开发工具(个人使用)

Linux开发工具 1.Linux yum软件包管理器1.1Linux安装程序有三种方式1.2注意事项1.3如何查看,安装,卸载软件包1.3.1查看软件包1.3.2安装软件包1.3.3卸载软件 2.Linux vim编辑器2.1vim的基本操作2.2vim正常模式命令集2.3vim底行模式命令集2.4vim配置 3.Lin…

就凭这张图,下订华为享界S9

文 | Auto芯球 作者 | 雷慢 冲啦!就在刚刚, 我们团队下订了一辆享界S9, 还琢磨买奔驰S级,宝马7系和奥迪A8的老板们, 是应该试试享界S9了, 至少先占个坑,8月底S9上市当天, 可以…

微型导轨在自动化制造中有哪些优势?

微型导轨在自动化制造中发挥重要作用,能够满足自动化设备制造中对精度要求较高的工艺环节。适用于自动装配线、自动检测设备和机器人操作等环节,推动了行业的进步与发展。那么,微型导轨在使用中有哪些优势呢? 1、精度高和稳定性强…

FPGA DMA IP核使用指南

摘要 本文旨在介绍FPGA中DMA(Direct Memory Access)IP核的使用,包括其基本框架、测试代码编写以及仿真波形的分析。DMA是一种允许外围设备直接与内存进行数据交换的技术,无需CPU的介入,从而提高了数据传输的效率。 1. 引言 在现代FPGA设计中,DMA IP核因其…