APP 安全测试项总结

news2024/9/30 21:31:55

一、安装包测试

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等。如果是纯黑盒测试,则必须覆盖到所有代码路径才能保证没有遗漏,也可使用代码覆盖率测试判断是否覆盖。

二、敏感信息测试

数据库是否存储敏感信息,某些应用会把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)应用程序必须能够处理不可预知的用户操作,例如错误的操作和同时按下多个键。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Temporal Dynamic Quantization for Diffusion Models阅读

文章目录 AbstractIntroductionBackgrounds and Related Works2.1 扩散模型2.2 量化2.3 量化感知训练和训练后量化 TemporalDynamic Quantization3.1 量化方法3.2 扩散模型量化的挑战3.3 TDQ模块的实现3.4 工程细节时间步的频率编码TDQ模块的初始化 Experimental SetupResults5…

#git 问题failed to resolve head as a valid ref

问题如下: 解决方法: 1、运行 git fsck --full 可以查看具体error信息,一般都是head索引问题 2、.git\refs\heads\xxx(当前分支)txt编辑器打开显示乱码,而不是hash编码 3、在.git\logs\refs\heads\xxx&a…

如何评价 Python 语言的运行速度

Python 作为一门编程语言,其运行速度一直是业界讨论的焦点。它的简洁语法和广泛的应用使得它在开发过程中非常高效,然而,运行速度与一些更底层的编程语言相比存在一定的劣势。这是否是由于 Python 语法的简洁性所带来的代价?我们可…

心觉:自我暗示语“正确姿势”的科学解释

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作185/1000天 “如何重塑高效学习的潜意识”这个系列文章其实昨天已经写完了 在写这个系列文章的时候,我突然有一个关于…

宠物空气净化器该怎么选?希喂、美的、有哈这三款有推荐的吗?

终于要到国庆了,这可是打工人除春节外最长的假期!在外上班后,回家的次数越来越少了,这次国庆肯定要回去陪陪父母。这票是真难买啊,候补了我一个多星期才买到。本来以为最困难的问题已经解决了,又想到我家猫…

Mamba以及我们看的第一篇MambaOcc

0. 简介 深度学习架构有很多,但近些年最成功的莫过于 Transformer,其已经在多个应用领域确立了自己的主导地位。如此成功的一大关键推动力是注意力机制,这能让基于 Transformer 的模型关注与输入序列相关的部分,实现更好的上下文…

动手测试:CPU的L1~L3级缓存和内存的读取速度测试

引言 在许多文章中指出了这些缓存的架构,速度差异等。纸上得来终觉浅,今天想实际写代码简单测试一下。 背景 现代计算机系统中,CPU缓存(L1、L2、L3)和主内存(RAM)之间的读取速度有着显著的差…

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…

U盘恢复数据工具:让数据失而复得的魔法

优盘里数据丢失无疑会给我们的工作和生活带来诸多不便。幸运的是,优盘数据恢复软件应运而生,它们如同数据的守护者,为我们提供了找回丢失数据的希望。这次我们就一同来探讨u盘恢复数据有什么方法吧。 1.福昕恢复数据 链接直达:h…

AutoSar 通信服务架构,CAN通信诊断详解

文章目录 Com(通信服务模块)PDU的定义和结构PDU的分类IPDU Mux 模块PDU R 模块(路由)Bus TP 模块BUS InterfaceCanIf模块LinIf模块 发送数据示例(CAN报文)接收数据示例(CAN报文)通信…

监控告警功能详细介绍及操作演示:运维团队的智能保障

在当今这个信息化高速发展的时代,运维团队面临着前所未有的挑战。为了确保系统的稳定性和高效运维,监控告警功能成为了运维团队不可或缺的得力助手。本文将详细介绍我们的监控告警功能,并结合实际操作页面进行演示,帮助运维团队更…

Docker入门指南:快速学习Docker的基本操作

为什么需要Docker 有时我们在本地开发好程序并成功运行之后,却在服务器上运行不起来,通过观察日志通常会发现,哦原来是这个库没安装,于是我们就需要先安装需要用到的库,然后再启动服务你可能还会发现用到的数据库信息…

《Linux从小白到高手》理论篇(六):Linux软件安装一篇通

List item 本篇介绍Linux软件安装相关的操作命令,看完本文,有关Linux软件安装相关操作的常用命令你就掌握了99%了。 Linux软件安装 RPM RPM软件的安装、删除、更新只有root权限才能使用;查询功能任何用户都可以操作;如果普通用…

真正的Open AI ——LLaMA颠覆开源大模型

1. LLaMA 简介 LLaMA(Large Language Model Meta AI)是由Meta(原Facebook)推出的一个大型语言模型系列,旨在通过更小的模型规模和更少的计算资源,实现与其他主流语言模型(如GPT)相媲…

spring简短注入

新建bean 创建set方法 jpackage com.dependency.spring6.bean;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class User {private static final Logger LOGGER LoggerFactory.getLogger(User.class);private String username;private String password;pr…

RPA跨流程复用元素技巧|实在RPA研究

为什么要跨流程复用元素 在 RPA 操作中,元素至关重要,因为自动化的本质就是模拟人类对元素的操作。基本上,每个流程都会包含若干个元素。对于同时维护多个流程的用户而言,相似的流程包,甚至是同一个元素。例如电商用户…

Solidworks斜接法兰快速绘制钣金箱体

Solidworks斜接法兰快速绘制钣金箱体 Chapter1 Solidworks斜接法兰快速绘制钣金箱体 Chapter1 Solidworks斜接法兰快速绘制钣金箱体 0.5mm间距为钣金焊接的预留焊缝。

Linux云计算 |【第四阶段】RDBMS1-DAY6

主要内容: MySQL索引(索引分类、创建索引)、用户及授权(创建用户并授权、查看授权、撤销授权、授权库mysql)、root密码恢复、备份、使用mysqldump进行逻辑备份、Percona 一、MySQL索引 1、基本概念 MySQL 索引(Inde…

给虚拟机安装操作系统以及无密码SSH登录

安装完虚拟化软件VMware Workstation Pro 17之后,我们下载了Ubuntu光盘映像文件,上次说演示desktop版的安装,但是考虑到后面要部署数据库,所以为了方便起见还是下载sever服务器版。 文件还挺大,在等待下载完成这会我们…

基于SpringBoot的休闲娱乐代理售票系统设计与实现

1.1研究背景 21世纪,我国早在上世纪就已普及互联网信息,互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统,由从今传统的管理模式向互联网发展,如今开发自己的系统是理所当然的。那么开发休闲娱乐代理售票…