安全测试的最佳实践

铁佛  论坛元老 | 2024-6-15 02:12:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1822|帖子 1822|积分 5466

昨天简单先容了安全测试的干系概念,今天看看具体的安全测试操作。

什么是安全测试?


安全测试检查软件是否轻易受到网络攻击,并测试恶意或意外输入对其操作的影响。安全测试提供证据,证明体系和信息是安全可靠的,并且它们不接受未经授权的输入。

安全测试是一种非功能测试。与功能测试差别,功能测试关注的是软件的功能是否正常工作(“软件做了什么”),而非功能测试关注的是应用程序是否被正确设计和配置(“怎样”举行)。

安全测试的主要目的:

1.辨认资产——必要保护的东西,比如软件应用程序和盘算基础设施。

2.辨认威胁和漏洞-可能对资产造成侵害的运动,或一个或多个资产中可能被攻击者利用的缺点。

3. 辨认风险-安全测试旨在评估特定威胁或漏洞将对业务造成负面影响的风险。风险是通过辨认威胁或漏洞的严重程度以及利用的可能性和影响来评估的。

4. 执行补救—安全测试不仅仅是对资产的被动评估。它为修复发现的漏洞提供了可操作的引导,并可以验证漏洞是否已乐成修复。

安全测试的关键原则

安全测试旨在确保构造的体系、应用程序和数据遵循以下安全原则:

1. 秘密性—限制对体系管理的敏感访问的访问。

2. 完备性——确保数据在整个生命周期内是同等、正确和可信的,并且不能被未经授权的实体修改。

3. 身份验证——确保敏感体系或数据受到一种机制的保护,这种机制可以验证访问它们的个人的身份。

4. 授权-确保敏感体系或数据根据身份验证用户的角色或权限正确控制访问。

5.可用性——确保关键体系或数据在用户必要时可用。

6.不可抵赖性——通过利用可证明的时间戳交换身份验证信息,确保发送或接收的数据不会被拒绝。

安全测试的范例

渗透测试(道德黑客)


渗透测试是在安全条件下对应用程序、软件、体系或网络举行真实网络攻击的过程。它可以帮助评估现有的安全措施在真实攻击中的表现。最紧张的是,渗透测试可以发现未知的漏洞,包罗zero-day威胁和业务逻辑漏洞。

渗透测试传统上是由被称为道德黑客的受信任和认证的安全专业人员手动完成的。黑客在约定的范围内工作,试图在不造成侵害的环境下,以可控的方式侵入公司的体系。比年来,自动化渗透测试工具正在帮助构造以更低的本钱和更高的测试频率得到类似的好处。

应用程序安全测试(AST)


应用程序安全测试形貌了构造可以用来发现和消除软件应用程序中的漏洞的方法。这些方法包罗在整个软件开发生命周期(SDLC)中测试、分析和报告软件应用程序的安全状况。

AST的主要目的是在应用程序发布到市场之前防止软件漏洞,如果做不到这一点,则在生产中快速辨认并修复它们。乐成的AST会带来更结实、更安全的源代码、对应用程序安全题目的更大可见性,以及对内部和外部威胁的更好保护。

Web应用程序安全测试


web应用程序安全测试的目的是确定web应用程序是否轻易受到攻击。它涵盖了各种自动和手动技能。

Web应用渗透测试旨在收集Web应用的干系信息,发现体系漏洞或缺陷,观察利用这些漏洞或缺陷的乐成程度,并评估Web应用漏洞的风险。

开放Web应用程序安全项目(OWASP)是一个致力于发现和报告Web应用程序中的安全漏洞的社区。

API安全测试


API安全测试有助于辨认应用程序编程接口(API)和web服务中的漏洞,并帮助开发人员修复这些漏洞。api提供了对敏感数据的访问,攻击者可以将它们用作内部体系的入口点。严格和定期地测试api可以保护它们免受未经授权的访问和滥用。

API特别轻易受到中心人(MiTM)攻击(攻击者可以窃听API通信并盗取数据或凭据)、API注入(攻击者可以向内部体系注入恶意代码)和拒绝服务(DoS)等威胁的攻击,在这种威胁中,攻击者用假流量淹没API以拒绝向合法用户提供服务。

为了减轻这些威胁,API必须经过验证,以对用户请求举行强身份验证,根据最小权限原则对用户举行授权,利用SSL/TLS对所有通信举行加密,并对用户输入举行消毒以防止代码注入和篡改。

漏洞管理


漏洞管理是一个持续的过程,使构造可以或许跨端点、工作负载和网络辨认、评估、报告、管理和修复安全漏洞。安全团队通常利用漏洞扫描工具来检测漏洞,并实现手动或自动流程来修复漏洞。

结实的漏洞管理程序利用威胁谍报并利用IT运营知识来了解漏洞的实际业务影响,确定风险的优先级,并尽快修复高优先级的漏洞。

配置扫描


安全扫描,也称为配置扫描,是辨认软件、网络和其他盘算体系的错误配置的过程。这种范例的扫描通常根据研究机构或遵从尺度指定的最佳实践列表检查体系。

自动配置扫描工具辨认错误配置,并提供关于每个错误配置的更多详细信息的报告,以及怎样解决这些错误配置的建议。

安全审计


安全审计是根据定义的尺度审查/审计应用程序/软件的布局化过程。审计通常包罗根据安全需求审查代码或体系布局,分析安全漏洞,并评估硬件配置、操作体系和构造实践的安全状况。它还评估法规和尺度的遵守环境。

风险评估


风险评估答应构造辨认、分析和分类其业务关键资产面临的安全风险。风险评估可以帮助了解对构造基础设施最紧张的威胁是什么,并确定体系补救的优先级。它还有助于安全投资的恒久规划和预算编制。

安全环境评估


安全态势评估联合了安全扫描、道德黑客和风险评估,不仅可以确定构造面临的风险,还可以确定其当前的安全控制及其有效性。它可以辨认当前安全态势中的漏洞,并提出将提高受保护资产安全性的变更或改进建议。

安全测试用例和场景


身份验证


认证体系的安全测试应包罗以下内容:
检查密码规则—测试站点要求的密码安全级别和质量。
辨认用户名枚举漏洞—检查错误是否因是否有用户而差别。
测试密码强度—创建密码的最低要求。
辨认帐户规复漏洞—检查攻击是否可以规复帐户(即通过更改电子邮件或密码)。
检查用户名强度—确保用户名是唯一的。
辨认fail-open身份验证-检查即使身份验证失败,体系是否仍提供开放访问。
验证cookie作用域—检查cookie的作用域是否在域中,或者攻击者是否可以盗取它们。

输入验证


输入验证测试应包罗以下内容:

模糊请求参数—检查反射参数和打开重定向。

辨认SQL注入漏洞—检查体系是否将参数作为SQL处理。

辨认SOAP注入漏洞—检查应用程序是否相应SOAP。

辨认LDAP注入漏洞—测试是否无法清除输入。

辨认XML注入漏洞—检查注入的XML是否影相应用程序。

辨认XXE注入漏洞—检查攻击者是否可以注入外部实体。

应用程序和业务逻辑


这些测试用例对于安全测试很紧张,并且必要人工干预(考虑到每个应用程序逻辑的唯一性,它们太复杂而无法自动化)。测试应包罗以下内容:

确定应用程序逻辑攻击面——应用程序做什么。

检查来自客户端的数据传输—查看应用程序之间的信息传输是否差别。

在应用程序基于其逻辑的客户端检查中确定输入验证。

辨认多步骤流程中的逻辑缺陷—检查是否可以绕过步骤。

测试不完备的输入处理—检查应用程序是否处理错误的输入。

检查信任关系——例如,用户是否可以访问管理功能。

其他测试


还有其他各种测试来帮助确保应用程序的安全性并辨认以下漏洞:

DOM漏洞,如XSS。

缺少HTTP安全标头。

本地隐私漏洞。

弱且持久的cookie。

弱SSL密码。

包罗敏感信息的URL参数。

安全测试方法



黑盒测试


在黑盒测试中,安全测试人员从外部评估体系的安全性,而不知道天生相应的内部历程。黑盒是一个不透明的体系,这意味着只有输入和输出是可观察的。在某些环境下,测试人员忽略了体系的内部布局,即使有可能理解它。

黑盒测试确保了测试人员和代码创建者之间的分离。它迫使测试人员接纳局外人的视角来测试软件,由于攻击者可能会接近它。测试和软件开发过程之间的社会和技能分离使测试人员可以或许挑战创建者——例如,通过以开发人员没有考虑到的方式操纵应用程序。

白盒测试


在白盒测试中,测试人员根据软件的源代码设计测试用例和测试。测试人员知道并理解代码布局,而不是黑盒测试或灰盒测试(测试人员对代码布局的知识有限)。由于这种可观察性,它也被称为透明、透明或玻璃盒测试。

白盒测试技能侧重于应用程序的内部工作和软件组件,从内部测试其设计和布局。测试团队可以将此技能应用于体系、集成和单位测试。


灰盒测试


灰盒测试是白盒测试和黑盒测试的肴杂体——黑盒测试涉及一个内部布局未知的测试对象;白盒测试要求完全了解应用程序的内部布局。在灰盒测试中,测试人员有体系内部布局和工作方式的部分视图。

测试人员可以基于对应用程序底层架构和代码的有限理解来举行测试。因此,测试对象是半透明的或“灰色的”。这种方法联合了白盒和黑盒测试技能,从两者中提取出最好的。灰盒测试人员将白盒测试的代码目的与黑盒测试的各种创新方法(如功能测试和回归测试)合并在一起。测试人员可以同时评估软件的用户界面和内部工作。

什么是DevSecOps?


DevSecOps是一种软件开发和项目管理计谋,它融合了开发、安全和运营流程。它将这些与基础设施即代码(IaaS)联合起来,以创建自动化的、持续的交付管道。

DevSecOps管道的中心目的是在整个软件开发生命周期中实现自动化、监控和其他安全流程。它将安全性纳入每个阶段,包罗操持、开发、构建、测试、发布、交付和部署阶段。

将安全性集成到开发过程的每个部分对于持续集成(CI)和降低遵从本钱非常紧张。它还使团队可以或许更快地交付安全软件,同时降低代价高昂的错误和回滚的风险。在DevSecOps框架中,每个团队成员从一开始就分担安全责任——员工必须做出明智的决定,并在每一步都考虑到安全题目。

数据安全测试


对于大多数构造来说,数据安满是一项具有挑战性的任务。大多数公司都将很大一部分安全预算用于保护敏感数据免受攻击。业务数据是大多数关键业务流程的核心部分,数据走漏可能会使构造面临合规和法律风险、荣誉侵害和财务丧失。

为了保护数据,构造必须测试其安全控制,以确保它们满意构造的安全需求,以及符合政府法规和行业尺度。在许多环境下,遵从性尺度明确要求举行安全测试,以向考核员证明数据得到了适当的保护。

数据安全审计


构造应至少每隔几个月举行一次数据安全审计。这使得辨认数据安全机制中的风险和缺点成为可能。虽然审计可以由内部安全或合规团队执行,但与第三方审计人员或渗透测试人员签约也是有价值的。志愿审计可以发现紧张的安全题目,并在构造遭受有风险、有压力的外部审计之前对其举行补救。

数据安全审计的主要输出是一份安全报告,其中详细阐明了数据安全模型中的缺点和缺失部分。必须努力优先考虑这些缺点,并对其举行补救,以提高数据安全准备程度。

遵从性测试


合规性测试是监控和评估体系、设备、网络和云环境的过程,以确保符合羁系要求和行业网络安全尺度。

跟踪合规环境并不总是轻易的,特别是在高度羁系的行业和部门。法规和尺度经常变化,并且可能具有影响IT环境的各个方面的非常详细的需求。如今,大多数构造都在将工作负载迁移到云中,而云环境的动态特性可能会使遵从性更具挑战性。

遵从性测试可能涉及跟踪敏感资产、检查个人身份信息,以及执行演练或渗透测试,以验证构造是否为攻击做好了准备。遵从性测试的一个关键部分是数据发现和分类——理解敏感数据所依赖的位置,然后确认适当的安全措施已经到位。

云原生安全测试


云原生是一组设计原则和技能,用于创建可以或许充分利用云环境的应用程序。云原生开发模型,包罗容器化和无服务器盘算,旨在提高可伸缩性和弹性,并实现更快的开发和部署。

原生云环境的挑战之一是低可见性。云原生应用程序可以有大量的运动部件,其中大多数是短暂的。云原生安全测试包罗发现云原生应用程序的元素并辨认安全缺点,例如错误配置、缺少安全最佳实践和漏洞。

云原生安全测试的两个紧张重点领域是容器图像扫描和基础设施即代码(IaC)扫描。IaC模板是一个紧张的攻击面,由于它们用于大规模自动创建云原生资源。

数据库安全测试


数据库安全包罗保护Oracle、Microsoft SQL Server、MySQL等数据库服务器不受未经授权的访问和网络攻击。数据库通常保存关键业务信息,因此是攻击者有价值的目的。

数据库安全测试


数据库安全包罗保护Oracle、Microsoft SQL Server、MySQL等数据库服务器不受未经授权的访问和网络攻击。数据库通常保存关键业务信息,因此是攻击者有价值的目的。

数据库安全测试旨在测试数据库关键元素的安全状况,包罗底层数据库管理体系(DBMS)、其托管服务器、存储在数据库中的数据、连接到数据库服务器的应用程序以及用于访问数据库的网络基础设施。

数据库安全测试的一个紧张方面是检查常见的数据库威胁向量,如SQL注入、NoSQL注入和本地文件注入(LFI)。数据库安全测试旨在辨认数据库中的安全缺点,并提供可操作的见解,以帮助保护数据库免受入侵、滥用和破坏。

云数据测试


云测试是测试以IaaS (infrastructure as a service)模式部署在云盘算资源上的软件应用程序,或以PaaS (platform as a service)或SaaS (software as a service)模式由第三方服务提供商提供服务的过程。

云数据测试可以确保最佳的数据性能、可用性和安全性,并最大限度地减少干系基础设施或平台的停机时间。

云数据测试的核心重点是确保云和SaaS提供商的答应得到实现。例如,云数据测试可以验证提供商是否满意性能sla,测试数据是否实际复制到多个位置,以及验证灾难规复流程是否正常运行。


安全测试工具


静态应用安全测试(SAST)


SAST工具在静止时评估源代码。SAST的目的是辨认可利用的缺陷,并提供包罗发现和建议在内的详细报告。

您可以运行SAST来检测源代码中的题目,检测输入验证、数值错误、路径遍历和竞争条件等题目。SAST也可以用于已编译的代码,但这必要二进制分析器。

动态应用安全测试(DAST)


DAST工具在运行时检查应用程序。DAST的目的是在应用程序运行时检测应用程序中可利用的缺陷,利用各种攻击。

DAST工具通常利用模糊法向应用程序抛出大量已知的无效错误和意外的测试用例,试图检测应用程序可能被利用的条件。

您可以运行DAST检查来检查广泛的组件,包罗脚本、会话、数据注入、身份验证、接口、相应和请求。


交互式应用安全测试(IAST)


IAST工具利用静态和动态测试来创建肴杂测试过程。目的是确定在运行时期间是否可以利用已知的源代码漏洞。IAST工具通常用于减少假阳性的数目。

一个IAST工具联合了各种测试技能来创建多个高级攻击场景,利用关于数据流和应用程序流的预收集信息。然后,这些工具递归地执举措态分析。

动态分析周期确保IAST工具根据应用程序对每个测试用例的相应方式,继承了解更多关于应用程序的信息。根据解决方案的能力,工具可以利用分析来创建新的测试用例,以得到关于应用程序的更多见解。

软件依赖项分析(SCA)


软件依赖项分析(SCA)是一种用于管理和保护开放源码组件的技能。开发团队可以利用SCA快速跟踪和分析项目中部署的开源组件。

SCA工具可以检测所有干系组件、支持它们的库以及直接和间接依赖项。在每个组件中,他们可以辨认漏洞并建议补救措施。扫描过程创建一个材料清单(BOM),它提供了项目软件资产的完备列表。

安全测试最佳实践


下面是一些最佳实践,可以帮助您实现安全测试并乐成地举行实践。

安全测试左移


随着转向devsecops(开发人员、安全和运维团队之间的更紧密协作),构造正在开发过程的早期添加安全实践。将安全测试工具集成到持续集成/持续交付(CI/CD)周期中是很常见的。

将安全测试向左移动可以帮助开发人员理解安全题目,并在软件开发过程中实现安全最佳实践。它还可以帮助测试人员在软件投入生产之前及早发现安全题目。末了,操作和安全团队可以在生产中利用安全测试来发现题目,并与其他团队合作解决题目。

测试内部接口,而不仅仅是api和ui


安全测试通常侧重于外部威胁,例如来自公开可用的web表单的用户输入。然而,攻击者利用内部体系中的缺点越来越常见。您应该利用安全测试来验证内部体系之间存在安全接口,并且内部威胁或受损帐户不能用于升级特权。这使您的构造更接近零信任安全模型。


经常做自动化测试


虽然执行手动安全测试(如全面渗透测试或安全审计)很紧张,但构造必须自动化安全测试并经常执行它——最好是在应用程序或盘算基础设施的每次更改时执行。

企业应用程序利用大量组件,这些组件可能必要安全更新,或者软件供应商可能不再支持这些组件。经常测试业务关键体系,对影响它们的安全题目给予高度优先级,并紧急投入资源来修复它们。

第三方组件和开源安全


构造必须对其应用程序中利用的第三方代码举行安全测试,尤其是开源组件。

信任贸易软件是不明智的,测试开放源码组件同样紧张,由于这些组件可能必要更新,或者可能没有得到适当的保护。您应该像扫描本身的代码一样扫描和修复第三方代码,并确定更新、修复或替换不安全组件的优先级。


利用OWASP Web安全测试指南


Web安全测试指南(WSTG)是一个在线网络安全测试资源,为安全专业人员和Web应用程序开发人员提供信息。它由网络安全专业人员和热心的志愿者创建,旨在为验证web服务和应用程序的安全性提供最佳实践框架。

末了: 下方这份完备的软件测试视频学习教程已经整理上传完成,朋友们如果必要可以自行免费领取【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完备的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最艰巨的路程,希望也能帮助到你!

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表