安全测试-优秀测试工程师必备的4项安全测试方法

这篇具有很好参考价值的文章主要介绍了安全测试-优秀测试工程师必备的4项安全测试方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.安全性测试

1、安全性测试方法
测试手段可以进行安全性测试,目前主要安全测试方法有:
  
1)静态的代码安全测试

主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。

2)动态的渗透测试

渗透测试也是常用的安全测试方法。是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。

这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。
  
3)程序数据扫描

一个有高安全性需求的软件,在运行过程中数据是不能遭到破坏的,否则就会导致缓冲区溢出类型的攻击。数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。

例如,对软件运行时的内存信息进行扫描,看是否存在一些导致隐患的信息,当然这需要专门的工具来进行验证,手工做是比较困难的。
  
2、反向安全性测试过程
  
大部分软件的安全测试都是依据缺陷空间反向设计原则来进行的,即事先检查哪些地方可能存在安全隐患,然后针对这些可能的隐患进行测试。

因此,反向测试过程是从缺陷空间出发,建立缺陷威胁模型,通过威胁模型来寻找入侵点,对入侵点进行已知漏洞的扫描测试。好处是可以对已知的缺陷进行分析,避免软件里存在已知类型的缺陷,但是对未知的攻击手段和方法通常会无能为力。
  
1)建立缺陷威胁模型

建立缺陷威胁模型主要是从已知的安全漏洞入手,检查软件中是否存在已知的漏洞。建立威胁模型时,需要先确定软件牵涉到哪些专业领域,再根据各个专业领域所遇到的攻击手段来进行建模。
  
2)寻找和扫描入侵点

检查威胁模型里的哪些缺陷可能在本软件中发生,再将可能发生的威胁纳入入侵点矩阵进行管理。如果有成熟的漏洞扫描工具,那么直接使用漏洞扫描工具进行扫描,然后将发现的可疑问题纳入入侵点矩阵进行管理。
 
3)入侵矩阵的验证测试

创建好入侵矩阵后,就可以针对入侵矩阵的具体条目设计对应的测试用例,然后进行测试验证。
  
3、正向安全性测试过程
  
为了规避反向设计原则所带来的测试不完备性,需要一种正向的测试方法来对软件进行比较完备的测试,使测试过的软件能够预防未知的攻击手段和方法。
  
1)先标识测试空间

对测试空间的所有的可变数据进行标识,由于进行安全性测试的代价高昂,其中要重点对外部输入层进行标识。

例如,需求分析、概要设计、详细设计、编码这几个阶段都要对测试空间进行标识,并建立测试空间跟踪矩阵。
  

2)精确定义设计空间

重点审查需求中对设计空间是否有明确定义,和需求牵涉到的数据是否都标识出了它的合法取值范围。

在这个步骤中,最需要注意的是精确二字,要严格按照安全性原则来对设计空间做精确的定义。
  
3)标识安全隐患
根据找出的测试空间和设计空间以及它们之间的转换规则,标识出哪些测试空间和哪些转换规则可能存在安全隐患。
例如,测试空间愈复杂,即测试空间划分越复杂或可变数据组合关系越多也越不安全。还有转换规则愈复杂,则出问题的可能性也愈大,这些都属于安全隐患。
  
4)建立和验证入侵矩阵

安全隐患标识完成后,就可以根据标识出来的安全隐患建立入侵矩阵。列出潜在安全隐患,标识出存在潜在安全隐患的可变数据,和标识出安全隐患的等级。其中对于那些安全隐患等级高的可变数据,必须进行详尽的测试用例设计。
  
4、正向和反向测试的区别
正向测试过程是以测试空间为依据寻找缺陷和漏洞.(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!

反向测试过程则是以已知的缺陷空间为依据去寻找软件中是否会发生同样的缺陷和漏洞,两者各有其优缺点。

1)正向测试
过程的优点是测试比较充分,但工作量相对来说较大。因此,对安全性要求较低的软件,一般按反向测试过程来测试即可,对于安全性要求较高的软件,应以正向测试过程为主,反向测试过程为辅。

2)反向测试
过程主要的一个优点是成本较低,只要验证已知的可能发生的缺陷即可,但缺点是测试不完善,无法将测试空间覆盖完整,无法发现未知的攻击手段。

二.常见的软件安全性缺陷和漏洞

软件的安全有很多方面的内容,主要的安全问题是由软件本身的漏洞造成的,下面介绍常见的软件安全性缺陷和漏洞。
  
1、缓冲区溢出
  
缓冲区溢出已成为软件安全的头号公敌,许多实际中的安全问题都与它有关。造成缓冲区溢出问题通常有以下两种原因。
1)设计空间的转换规则的校验问题

即缺乏对可测数据的校验,导致非法数据没有在外部输入层被检查出来并丢弃。非法数据进入接口层和实现层后,由于它超出了接口层和实现层的对应测试空间或设计空间的范围,从而引起溢出。

2)局部测试空间和设计空间不足
当合法数据进入后,由于程序实现层内对应的测试空间或设计空间不足,导致程序处理时出现溢出。
  
2、加密弱点
  
这几种加密弱点是不安全的:

1)使用不安全的加密算法。加密算法强度不够,一些加密算法甚至可以用穷举法破解。

2)加密数据时密码是由伪随机算法产生的,而产生伪随机数的方法存在缺陷,使密码很容易被破解。

3)身份验证算法存在缺陷。

4)客户机和服务器时钟未同步,给攻击者足够的时间来破解密码或修改数据。

5)未对加密数据进行签名,导致攻击者可以篡改数据。所以,对于加密进行测试时,必须针对这些可能存在的加密弱点进行测试。
  
3、错误处理
  
一般情况下,错误处理都会返回一些信息给用户,返回的出错信息可能会被恶意用户利用来进行攻击,恶意用户能够通过分析返回的错误信息知道下一步要如何做才能使攻击成功。

如果错误处理时调用了一些不该有的功能,那么错误处理的过程将被利用。错误处理属于异常空间内的处理问题,异常空间内的处理要尽量简单,使用这条原则来设计可以避免这个问题。

但错误处理往往牵涉到易用性方面的问题,如果错误处理的提示信息过于简单,用户可能会一头雾水,不知道下一步该怎么操作。所以,在考虑错误处理的安全性的同时,需要和易用性一起进行权衡。
  
4、权限过大

如果赋予过大的权限,就可能导致只有普通用户权限的恶意用户利用过大的权限做出危害安全的操作。

例如:没有对能操作的内容做出限制,就可能导致用户可以访问超出规定范围的其他资源。进行安全性测试时必须测试应用程序是否使用了过大的权限,重点要分析在各种情况下应该有的权限,然后检查实际中是否超出了给定的权限。权限过大问题本质上属于设计空间过大问题,所以在设计时要控制好设计空间,避免设计空间过大造成权限过大的问题。

 

总结:

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

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

安全测试-优秀测试工程师必备的4项安全测试方法,技术分享,软件测试,自动化测试,安全,网络,运维

软件测试面试文档

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

安全测试-优秀测试工程师必备的4项安全测试方法,技术分享,软件测试,自动化测试,安全,网络,运维

 安全测试-优秀测试工程师必备的4项安全测试方法,技术分享,软件测试,自动化测试,安全,网络,运维

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

到了这里,关于安全测试-优秀测试工程师必备的4项安全测试方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 技术精英求职必备:大数据研发工程师简历模板

    原则 撰写针对大数据研发工程师职位的简历时,关键在于准确展现您在 大数据处理、分析和应用开发方面的综合技能、项目经验和技术成就 。简历应作为您展示跨多个技术栈的 编程能力、构建完整大数据解决方案和有效解决大数据技术问题 的能力的窗口。确保每一项经历

    2024年02月21日
    浏览(61)
  • 技术精英求职必备:AIGC(图像生成)研发工程师简历指南

    核心原则 撰写针对AIGC(图像生成)研发工程师职位的简历时,关键在于准确展现您在深度学习、计算机视觉和图像生成算法方面的综合技能、项目经验和技术成就。简历应作为您展示跨多个技术栈的编程能力、构建完整的图像生成解决方案和有效解决AIGC技术问题的能力的窗口

    2024年03月25日
    浏览(78)
  • 【十年网络安全工程师整理】—100渗透测试工具使用方法介绍

     渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对 某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告, 并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告, 可以清晰知晓系统中存在的安

    2024年02月02日
    浏览(51)
  • 2023软件测试工程师必备技能?要卷,谁还不会了......

    软件测试岗位是怎样的? 大伙:测试?简单啊,没什么技术含量,无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现,麻烦点的就是测试下部署安装是否出现兼容性问题等 web自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/ 没错,不可否认这是踏入软件测试

    2023年04月20日
    浏览(67)
  • 测试工程师常用的10个python库,面试必备哦

    目录 前言 1、os库 2、sys库 3、time库 4、selenium库 5、unittest库 6、pytest库 7、email库 8、appium库 9、pymsql库 10、requests库 总结: 今天给各位小伙伴带来的是测试工程师常用的10个python库,相信有些小伙伴肯定知道一些库,也使用过一些库。下面我们就来聊聊这常用的10个python库,我

    2024年02月08日
    浏览(49)
  • 一本书讲透ChatGPT——理论与实践的完美结合,大模型技术工程师的必备指南

    OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景,在多项专业和学术基准测试中表现出的智力水平,不仅接近甚至有时超越了人类的平均水平。这使得 ChatGPT 在推出之初就受到广大用户的欢迎,被科技界誉为人工智能领域的新里程碑。 人们在为生

    2024年03月13日
    浏览(38)
  • 如何成为一名优秀的网络工程师?

    网工是一个很泛的职业,工作内容属性决定了它不会只在某一方面专精...那么,网络工程师的技术水平体现在哪些方面? 1、强大的网络设计能力 普通的网工只能维护别人设计好的网络,而自己却不具备网络设计能力 ,尤其是大型复杂网络。优秀的网工不仅要具备网络的运维

    2024年02月06日
    浏览(57)
  • 怎样成为优秀的后端工程师

    本文翻译自国外论坛 medium,原文地址:https://medium.com/@pradeesh-kumar/how-to-become-a-good-backend-engineer-9da75202a104 让我们一起看看国外开发者认为优秀后端工程师需要掌握哪些技能。 本质上,软件开发有两个要素:前端和后端。当访问者登陆网站时,他们会看到 UI 与之交互,即前端

    2024年02月03日
    浏览(46)
  • 【职场解惑】如何做一个优秀的软件工程师

      在竞争激烈的职场上,各种职场难题时常出现,如何进行有效沟通、如何应对工作压力、如何提升职业能力等,这都是需要去克服的问题。一起来分享一下你的经验吧! “工程师是科学家;工程师是艺术家;工程师也是思想家。” 工程师是利用自然科学来创造工程的人。

    2024年02月06日
    浏览(50)
  • 招聘优秀 DevSecOps 工程师的实用面试关注点

    编程经验      任何从事 DevSecOps 和 AppSec 的安全专业人员都必须了解代码。理想情况下,所有安全专业人员都应从程序员成长起来。你可能不同意我的观点,但 DevSecOps 和 AppSec 专家应该在某种程度上与代码打交道,无论是一些 YAML 清单、JSON、各种脚本,还是用 Java、Go 等语

    2024年04月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包