| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> Security+ 学习笔记10 软件质量保证 -> 正文阅读 |
|
[开发测试]Security+ 学习笔记10 软件质量保证 |
一、代码审查(Code review)软件代码是安全漏洞的最常见来源之一。开发人员每年要编写数百万行的代码,在这些复杂的代码中埋藏着成千上万的安全问题,正等待着被发现。手工代码审查是发现这些漏洞的最重要的软件测试技术之一。在代码审查过程中,开发人员让其他开发人员审查他们的工作,他们检查代码以确保它不包含明显或微小的安全问题。这个过程可能是完全非正式的,完全正式的,或介于两者之间。最正式的代码审查过程被称为Fagan检查。Fagan检查遵循一个六步流程:
Fagan检查模型是一个高度正规化的代码审查过程,由于其繁琐的性质,它不常被遵循。然而,大多数软件开发组织确实在进行某种类型的手工代码审查,而且很容易看到Fagan检查过程的修改版本。无论组织以哪种方式进行代码审查,它们对软件开发的安全性都是至关重要的。 二、软件测试1.模型确认(Verification)和验证(Validation): 软件模型确认(verification):发生在整个开发过程中,它包括测试,以验证软件功能是否正常。目的是回答我们是否正在构建正确的产品这个问题,也就是检查规格是否被系统正确执行。 软件模型验证(validation):确保由开发工作产生的软件满足最初的业务需求。软件模型验证回答了这样一个问题:我们构建的产品是否正确,也就是用户的需求是否被满足。 2.压力测试(Stress Test): 3.用户验收测试(User Aacceptance Testing): 4.回归测试(Regression Testing): 三、代码安全测试代码安全测试超越了对功能需求的测试,检查代码是否有安全缺陷(security flaws)。虽然代码审查在软件安全方面发挥着重要作用,但它们涉及到开发人员检查代码和检查它的缺陷。代码测试(tests)超越了代码审查(reviews),它们使用技术来协助代码检查过程。对于组织来说,在同一个软件上同时使用代码安全测试和代码审查是很常见的,以获得对软件质量的不同观点。 有两种主要的代码测试类型,静态(Static)测试和动态(Dynamic)测试。
重要的是要认识到这不是一个测试比另一个更好的情况。静态测试经常识别出动态测试所使用的合成事务中没有包括的缺陷。动态测试经常会发现静态测试无法预见的缺陷和功能。 四、模糊测试(Fuzz testing)模糊测试是一种非常重要的软件测试技术。模糊测试向软件提供许多不同类型的有效和无效输入,试图使该软件进入不可预测的状态,或披露机密信息。 模糊测试的工作原理是自动生成输入值(可以来自不同输入源),并将其输入到软件包中。 运行测试的开发者可以提供一个长或短的输入值列表,或者他们可以写一个脚本来生成这些输入值。模糊测试包(fuzz testing package)也可以随机生成输入值,也可以使用称为 "生成模糊(generation fuzzing)"的技术从规范中生成输入值。或者模糊测试包可以分析真实的输入,然后用一种被称为突变模糊(mutation fuzzing)的方法修改这些真实的数值。 我们可以使用Zed Application Proxy或ZAP作为测试工具,可以从开放网络应用安全项目(OWASP)免费获得。 需要注意的是,模糊测试是一种潜在的危险工具,可以被看作是一种进攻性的黑客技术。我们应该只在得到应用程序所有者的许可时才进行模糊测试。 五、代码仓库(Code repositories)
Git是最流行的版本控制机制之一,可以与代码仓库结合使用,例如(Github,Gitlab等)。Git的操作可以参考如下的链接: 确保代码仓库的安全是软件开发人员和网络安全专家工作的一个重要部分。代码库是应用安全的一个重要部分,但它只是代码管理的一个方面。网络安全团队还应该与开发人员和运营团队合作,确保通过组织批准的发布管理流程,以安全的方式提供和取消应用程序。该流程应包括代码完整性测量。代码完整性测量使用加密的哈希函数来验证正在发布到生产中的代码是否与先前批准的代码一致。哈希值的任何偏差都表明代码被有意或无意地修改过,需要在发布前做进一步调查。 六、应用软件控制1.应用管理策略 2.应用更新 最后,应用控制技术,无论使用白名单还是黑名单,都能为网络安全分析人员提供重要的信息。因此,我们应该把应用控制日志连接到安全信息和事件管理系统或你的其他中央日志存储库。一旦把这些日志放在一个安全的、集中的位置,我们就可以观察它们是否有恶意活动的迹象。 七、第三方代码(Third-party code)软件开发人员经常依赖别人创建的代码来提高他们的效率。除了在组织内部重复使用代码外,开发人员还经常利用第三方的代码。第三方软件库(Libraries)是开发人员之间共享代码的一种非常常见的方式。库由执行相关功能的共享代码对象组成。例如,一个软件库可能包含一系列与生物学研究、金融分析或社交媒体有关的功能。 为了让开发者更容易获得库,相关组织经常发布软件开发工具包(Software Development kits)或SDK。SDK是我们的软件库集合,与文档、示例和其他资源相结合,旨在帮助程序员在开发环境中快速启动和运行。SDK还经常包括专门的实用程序,旨在帮助开发人员设计和测试代码。例如,这里是Facebook为iOS开发者提供的软件开发工具包。它提供了不同的组件,使开发者能够通过iOS应用程序处理分析、广告、身份和访问管理、Facebook图和Facebook平台的其他元素。 应用编程接口(Application Programming Interfaces),或API,是组织向开发者提供服务的另一种方式。API不是提供开发者自己运行的代码,而是通过互联网向开发者提供在其他地方运行的服务。例如,Twitter提供了一个API,允许开发者与Twitter服务互动,阅读、发布和执行其他Twitter动作。当组织将代码开发外包给其他组织时,也可能将第三方代码引入他们的环境。 安全团队应确保外包代码接受与内部开发的代码相同水平的测试。安全专家应该熟悉第三方代码在其组织中的各种使用方式,以及其组织向他人提供服务的方式。在共享代码中出现安全缺陷是相当常见的,因此了解这些依赖关系并对安全更新保持警惕是极其重要的。 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:21:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |