服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 四个常见的软件安全开发问题及其解决方法

四个常见的软件安全开发问题及其解决方法

2021-11-29 22:43ITPUB高博 编程技术

随着软件成为现代企业的支柱,网络攻击已成为一种永远存在的威胁,这使得应用程序安全成为确保业务连续性的必要条件。

随着软件已成为现代业务的支柱,网络攻击已成为一种永远存在的威胁,这使得应用程序安全成为确保业务连续性的必要条件。本文研究了四个常见的软件安全开发问题以及如何解决这些问题。

四个常见的软件安全开发问题及其解决方法

管理和维护安全软件的过程可能会给寻求尽快交付功能的开发人员带来意想不到的障碍。研究表明,59% 的公司现在每天多次、每天一次或每隔几天部署一次代码。然而,随着软件成为现代企业的支柱,网络攻击已成为一种永远存在的威胁,这使得应用程序安全成为确保业务连续性的必要条件。

左移运动——在开发过程的早期进行安全测试和修复缺陷——增加了开发人员在应用程序安全方面发挥作用的需求,但经过安全培训的开发人员仍然存在很大的技能差距。有兴趣提高安全知识的开发人员可以从了解一些常见的 DevSec 问题开始。

挑战一:漏洞修复时间缓慢

对于开发人员和安全团队来说,最常见的挑战之一是安全债务——代码中存在很长时间的安全漏洞,如旧的信用卡余额,现在解决起来比引入时要昂贵得多。为避免增加安全债务,开发人员可以实施自动化扫描和测试。

自动化程度越高越好:在一次年度软件安全状况 (SoSS) 报告中,我们发现将动态分析 (DAST) 与静态分析 (SAST) 结合使用的组织修复 50% 的安全漏洞平均快 24.5 天。

更快地查找和修复新缺陷的另一种方法是更频繁地扫描。更频繁的扫描使组织能够以 22.5 天的速度到达中间点,并且通过 API 运行 SAST 扫描将修复 50% 的缺陷的时间缩短了 17.5 天。

研究还表明,稳定的扫描节奏可以帮助您的团队看到缺陷类型比例的有意义的变化,并随着时间的推移减少安全债务。将安全测试视为马拉松,而不是短跑:在赛事前一周只跑 50 英里并不能为马拉松做好准备。

挑战二:常见代码安全漏洞的引入

了解哪些缺陷对您的应用程序构成最大风险以及它们是如何引入的,对于防止这些常见缺陷导致的破坏性网络攻击至关重要。我们的 SoSS 报告发现,信息泄露 (65.9%)、CRLF 注入 (65.4%)、密码问题 (63.7%) 和代码质量 (60.4%) 是应用程序中最常见的缺陷。为了解决这些常见的缺陷,开发人员应该考虑以下几点:

对于信息泄露,在编写代码时依靠安全编码最佳实践并实施安全测试程序。

为防止 CRLF 注入,不要相信用户输入,使用正确的验证和编码清理用户提供的数据,并确保在 HTTP 标头中正确编码输出。

可以通过良好的安全编码实践来防止加密漏洞。此外,大多数主要语言本质上都支持良好的加密实践,并且对不正确实现的担忧通常只会在个案的基础上出现。

通过使用一致的编码模式、在您的 SDLC 中自动进行安全测试并通过有效的培训保持最新状态,来防止代码质量不佳问题。

值得注意的是,这四个缺陷年复一年地一直排在报告的前 10 名,表明开发人员在意识和培训方面存在差距。事实上,对开发人员的安全培训可能是最大的挑战。大学不仅没有定期教授安全编码,而且在职培训也同样难以获得,因为大多数应用程序安全都由安全团队负责。为了使开发人员能够预防、查找和修复代码中的缺陷,组织需要提供可操作的、真实的培训,开发人员可以立即应用这些培训来加强他们所学的知识,并使其成为日常工作的一部分。

挑战三:依赖开源库,但只扫描内部编写的应用程序代码

开源代码几乎无处不在。当您考虑到许多开源库不是由开发人员直接选择时——应用程序中 46.6% 的不安全开源库是可传递的,由另一个正在使用的库引入应用程序——很容易理解开源代码如何扩展攻击面在应用程序中。事实上,我们的研究发现,71% 的应用程序在初始扫描时在开源库中存在缺陷。

集成软件组合分析 (SCA) 等扫描工具可以帮助更准确地检测开源漏洞。由于 74% 的开源缺陷可以通过补丁、修订或主要/次要版本更新来修复,因此该过程可以有效缓解。

使用正确的工具来掌握代码是降低风险和确保您可以自信地使用开源库的关键。

挑战四:代码中高危和非常高严重性缺陷的过剩

无论您喜欢哪种软件语言,了解对它们影响最大的缺陷都将帮助您在错误成为更大问题之前防止错误。我们的数据显示,某些语言比其他语言具有更多的高风险缺陷,这意味着应该仔细设计和测试用特定语言编写的代码。一些例子包括:

  • C++ 应用程序:近 60% 的应用程序存在高度和非常高的严重性缺陷;常见缺陷包括错误处理、缓冲区管理错误、数字错误和目录遍历缺陷。
  • PHP 应用程序: 52.6% 的 PHP 应用程序存在高度和非常高的严重性缺陷;最常见的缺陷包括跨站点脚本 (XSS)、加密问题、目录遍历错误和信息泄漏漏洞。
  • Java 应用: Java 以 CRLF 注入缺陷、代码质量问题、信息泄漏和密码问题领先;Java 应用程序 97% 是第三方代码,并带有更大的看不见的风险。

通过检查各种常见语言的缺陷频率趋势,开发人员可以更好地了解他们在编码时面临的日常风险,并可以使用这些知识在这些缺陷成为问题之前提前解决。

实施安全编码实践并利用实践培训来增加专业知识将有助于确保应用程序的安全性能够跟上现代开发需求。当开发人员不仅能够发现,而且能够修复他们的代码中的缺陷时,他们将在成为更精通安全的开发人员的道路上走得很好。

延伸 · 阅读

精彩推荐
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21