一、安全性测试简介
如今,的安全性在各行各业都受到了广泛关注。由于的泄露可能会带来重大的经济损失和社会不良影响,对其进行有效的保护显得尤为重要。的泄露途径众多,而本文所设计的安全性测试方法主要关注系统应用层面可能产生的泄露风险。
以某些应用系统界面为例,这些界面可能会展示大量的,并具备导出、拷贝、打印等功能,这些都可能引发的泄露。有些界面所展示的则是系统内部的分析结果或客户标签数据,这些数据若脱离系统环境则无实际意义。
在一个应用系统中,会存在多个界面,每个界面所展示的内容和数量都不尽相同。要准确判断哪些界面的风险较高、哪些较低,仅凭主观经验难以进行精准定量分析。这时,应用系统安全性测试就能发挥重要作用。它采用定量评估方法,能够准确计算每个展现应用界面的信息泄露风险值,这些风险值以0至100的数值形式呈现,从而方便我们定位风险并进行分级保护。
二、建立评估模型
为了通过计算机定量计算泄露的风险值,首先需要建立一个评估模型。在这里,我们采用径向基函数(RBF)神经网络方法,具体实现步骤如下:
第一步:确定输入
每个应用界面都包含一系列特征信息,如的种类和数量、展示条数的上限、精准查询定位功能以及其他安全相关功能等。我们的方法需要将这些特征信息抽象为特征向量。
以个人为例,我们可以将其分为七大类:
1. 身份标识信息:包括姓名、证件类别、证件号码等;
2. 其他身份信息:如联系方式、地址和照片等;
3. 认证信息:如密码、动态认证信息等;
4. 账户信息:包括账号、余额、交易情况等;
5. 财产信息:如经营或收入状况、不动产、车辆等;
6. 信用信息:如授信额度、贷款情况以及在经济活动中的信用状况等;
7. 其他信息。
针对每个应用界面,我们需要确定每类要素的数量、最多展现的行数以及是否具备精准查询定位功能等。在此基础上,我们可以形成输入特征向量。例如,图1所示的应用界面,其输入特征向量可能为(2,0,0,0,3,1,6,2,1,0),这表示一类要素展示2个,五类展示3个,六类展示1个等。
第二步:建立训练样本
建立样本的方法采用调研法。首先确定合理的评分范围,然后请调研对象在评分范围内对样本进行打分。针对个人要素的分类,我们制定了如下的打分规则:
100分档包含身份标识和认证至少一种信息组合;
80分档包含身份标识和财产或信用等至少一种信息组合;
60分档包含身份标识、身份其他、认证、账户、财产或信用等中的至少一种组合;
40分档包含认证、财产、信用等中的至少一种信息组合;
20分档只包含身份其他、认证、账户等单一信息。
对于每个样本,我们还需要结合特征向量的其他维度进行主观判断,以确定其在80-99分之间的具体分值。不同的调研者可能对同一个样本的打分存在差异,因此采用统计学均值方法来确定样本的最终取值,以获得相对准确的样本集。
第三步:建立评估模型
采用K-均值聚类技术,对N个输入样本进行K个最优聚类的均值计算,得到中心均值C1、C2至CK。这些中心均值将作为我们径向基函数核的基础。进一步地,我们将构建镜像基函数核函数,采用广为人知的高斯函数。高斯函数的公式中包含了所选取中心之间的最大距离这一要素。
我们的径向基函数神经网络的输入是N个样本X1、X2至XN。每一个样本Xi都由一系列数据点构成,如xi1、xi2至xim。对于这些数据点,我们会计算其差值函数。当我们将插值条件代入公式后,可以简化为一种更易于处理的形式。
神经网络的核心在于计算权值w。由于我们的矩阵是N行K列,行数多于列数,因此我们需要求其伪逆。这个过程就是找到权值的关键步骤。接下来,就可以通过建立的评估模型,对泄露的风险进行评估了。
对于系统对外展示级别的风险分析,我们的安全性测试方法非常适用。它可以分析计算每个应用界面的泄露风险值,适用于各领域的系统。通过较小的样本训练集,我们的神经网络可以快速成熟,自动分析判断泄露风险,减少人工判断的工作量及主观性。我们能够从系统应用界面中抽取出特征向量,将其输入到神经网络的输入层,自动计算出风险分值。通过对同一个系统的多个界面进行评估,我们可以找出风险较高的界面并加强访问控制。我们可以使用同一个模型对不同系统进行评估,横向比较不同系统之间的泄露风险,对不同应用系统实施分级保护策略。
对于从事IT工作的朋友们来说,尤其是软件测试人员,你们的辛勤付出常常被人忽视。每天执行用例、跟踪Bug的过程固然辛苦,还要与开发、产品团队的同事交流碰撞,这些都是日常的一部分。但你们的工作就像一场灾难在发生前的预防,你们的努力拯救了用户和整个软件产品,避免其遭受用户的批评或被抛弃的命运。如果你对软件测试感兴趣并希望在这个领域有所发展,我诚挚地邀请你加入我们的软件测试学习交流群。只需关注并私信我“测试”,即可加入我们共同学习和探讨软件测试技术、面试经验等软件测试相关的方方面面。我们还会定期举办免费直播课程,分享更多实用的测试技巧和方法。让我们一起进阶Python自动化测试/测试开发领域,走向高薪之路! |