IDE(集成开发环境)插件是安全开发的便捷方式之一

news2024/12/25 12:35:39

开发人员每天都使用插件,插件的功能在于简化开发流程,例如自动检测所有特殊字符(如“;”、“:”)或语法合规性。创建插件的目的本身就是为了让开发人员能够在编写代码时检测漏洞,并在无需离开 IDE 环境的情况下立即修复漏洞。我们来了解一下,什么是插件以及如何使用插件?

近年来,安全开发这一话题变得非常重要且具有现实意义。如今,从事开发或信息安全领域的人员基本上都听说过 DevSecOps 或见过相关信息。多项研究表明,网络应用程序攻击是最常见的网络攻击类型之一。例如,根据 Positive Technologies 的数据,在渗透测试人员发现的漏洞中有 72% 以上与应用程序代码中的错误相关,91% 的应用程序泄露了重要数据。各个公司和人员开展的类似研究有很多;要找到这些研究并不困难,只需使用搜索引擎即可。但这些研究都有一个共同点:都强调使用安全开发实践的重要性和必要性。

在搭建 DevSecOps 流程时,公司会尝试实施公认的最佳实践。例如,如果我们关注 Sonatype 的 DevSecOps 参考架构,我们不仅可以了解最佳的工具包及其在整个流程中的位置,而且还可以注意到一个非常重要的模式,即将代码安全测试转移到开发的早期阶段(左移)。原因在于,从开发到测试再到将应用程序投入生产的每个阶段,修复和禁用遗留漏洞或错误的成本都将增加。此成本可以用工时来表示,比如,开发人员在完成一个项目的工作后,会被分配到下一个项目。如果发现有问题,那么必须从新项目中抽调一名员工,或者分配额外的工时来修复已完工项目中的漏洞。另一方面,在生产中遗漏的漏洞可能会对公司声誉造成巨大影响和严重经济损失。这些论据正是应用左移等实践的主要推动力。

Sonatype 的 DevSecOps 参考架构

如果我们将参考架构简化一下,那么可以区分出代码检测的几个主要阶段,如源代码威胁、流程搭建威胁和流程交付威胁。在图中,就 IDE 插件在安全开发领域的应用而言,我们关注的是“源代码威胁”阶段。这一阶段是代码的编写阶段;该阶段包括首次编写的数行代码和项目搭建前完成的代码,如 GitLab 的主分支。

同样值得注意的是,最流行的代码检测技术,如 SAST、DAST 和 SCA,都设置在“流程搭建威胁”阶段。也就是说,检测是在开发人员已将其代码发送至存储库这一阶段进行的。如果每位开发人员将每个新编写的函数或模块都发送至 SAST 分析器进行检测,那么没有任何一家公司拥有足够的资源和能力完成。如果公司第一次使用或很少使用 SAST、DAST 或 SCA 分析,那么其开发人员很可能会收到一份厚厚的报告,其中包含需要修复和分析的漏洞,而分析可能会耗费大量的工时。这时,安全开发插件就能派上用场。

检测重点转移至开发的早期阶段

在应用程序代码编写过程中,安全开发插件可以直接发现漏洞和未记录的功能。内置分析模块可以检测开发过程中的源代码漏洞和配置文件错误。插件本身使用的是开发人员计算机的计算资源,无需额外的第三方资源。可以直接在 IDE 市场中检索这些插件。

VSCode 市场截图

插件本身分为 open(开放源代码)和 close source(封闭源代码),也就是说,有些插件允许查看源代码并支持自定义规则。如果公司有更高的或非常规的代码安全要求,这将非常有用。除此之外,这些插件还允许查看分析内核源代码。封闭源代码插件不允许修改内核工作原理或(在某些情况下)添加自定义规则和封闭知识库。封闭知识库包含已搭建的漏洞搜索规则和搜索算法。通常来说,封闭数据库表明该库已包含切合实际且真正有意义的漏洞检测,而且产品开发人员会继续支持该数据库。此外,开发成熟 SAST 分析器的供应商所创建的插件也可以实现同步。SAST 解决方案得出的结果可以通过插件关联到开发人员的 IDE 中,使开发人员能够直接在 IDE 内熟悉的环境中处理结果。插件适用于各种编程语言和 IDE,因此也适用于各种编程任务;文章末尾的表格中列出了相关示例。

下图是安全开发插件工作原理的示例。截图中突出了四个重点:

  1. 在对代码进行分析后,插件会以编译错误的形式显示发现的漏洞。检测出的所有漏洞将以列表形式显示,并允许在漏洞间进行便捷切换。
  2. 当选择某一漏洞时,代码漏洞部分会自动高亮显示。
  3. 漏洞管理。可以对漏洞进行确认、驳回(标记为假阳性,以免后期该操作重复出现),如果插件功能允许,还可以立即生成漏洞利用程序来测试漏洞。
  4. 数据流 (data flow) 映射允许追踪漏洞全路径,例如从公告易受攻击的变量开始,追踪其与其他数据的所有交互,直至输出点(漏洞将被利用的地方)。

插件会显示什么

当然,插件的使用并不能取代成熟的 SAST、DAST 和 SCA 分析,也不是万能的,但它可以成为构建安全开发和实施左移实践绝佳的附加工具包。值得注意的是,在同一个 SAST 解决方案中,项目通常已经构建完成,开发人员可以负责编写其中的单个模块。但是,在将模块上传到公共分支之前运用插件对其进行检测和修复,可以减少 SAST 结果解析阶段的工作量。

应用插件既可以是开发人员的个人主动行为,也可以是公司内部的规定。例如,个人动机在于提高自身的能力水平。无论是培训班还是大学教育,开发人员在学习过程中很少接受信息安全和安全编码原则相关的教育,而这已不是什么秘密。插件能够以非常容易理解的方式,通过实例实时演示代码缺陷是如何导致有条件的“数据泄露”的,而最重要的是,您将有机会学习如何消除这些缺陷。对公司来说,除左移之外,使用插件将有助于培训员工、贯彻安全开发原则,并有助于编写整洁代码。当然,员工和公司的整体利益也是一个巨大的竞争优势,因为在当前现实情况下,安全已经变得比以往任何时候都更加重要。

最后,顺理成章地以一个优秀插件的例子作为结尾。Positive Technologies 在安全开发社区 PosiDev 上为开发人员发布了免费的 IDE 插件,这些插件可以在 JetBrains 和 Visual Studio Code 中使用。因此,如果您对开发感兴趣,一定要尝试将它们应用到工作中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1532283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32CubeMX学习笔记25---FreeRTOS信号量

一、信号量简介 信号量用于同步,任务间或者任务和中断间同步 互斥量用户互锁,用于保护同时只能有一个任务访问的资源,为资源上一把锁。 二值信号量:同步。如果存在两个线程,为线程1和线程2,如果线程1发送了…

大载重无人机基础技术,研发一款50KG负重六旋翼无人机技术及成本分析

六旋翼无人机是一种多旋翼无人机,具有六个旋翼,通常呈“X”形布局。它采用电动串列式结构,具有垂直起降、悬停、前飞、后飞、侧飞、俯仰、翻滚等多种飞行动作的能力。六旋翼无人机通常被用于航拍、农业植保、环境监测、地形测绘等领域。 六旋…

PolarDN MISC(简单)大礼包 :详细思路过程

0和255 题目给了俩个文件,一个.txt,一个.py .txt文件中包含0和255 一个字节有八位,每一位只能储存1或0,计算机只懂二进制,所以就是2的八次方,又计算机规定从0开始计数,所以是0至255 考虑用编码转换工具将其…

Android: Gradle 命令

一、查看整个项目依赖传递关系 x.x.x (*) 该依赖已经有了,将不再重复依赖。x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替,并且该依赖已经有了,不再重复依赖。 1. gradlew ap…

redis常用五大数据类型

目录 Key 字符串String 常用命令 列表List 常用命令 集合Set 常用命令 Hash哈希 键值对集合 有序集合Zset Redis新数据类型 Key set key value...添加keykeys *查看当前库中所有的keyexist key该key是否存在type keykey的类型del key删除keyunlink key根据value选择非阻塞…

基于springboot+vue的火锅店管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

2024.3.16-408学习笔记-C-数据在内存中的存储

1、整数型存储 整数型存储就是所有整型家族里的数据类型的存储方式,也就是说包含了字符类型的存储(因为字符的操作符的返回值是ASCII码值,故实际上存储的是整数)。 1.1、有符号整数 有符号整数包含char,short&#x…

Combining external-latent attention for medical image segmentation

结合外部潜在注意的医学图像分割 摘要 注意机制是提高医学图像分割性能的新切入点。如何合理分配权重是注意力机制的关键,目前流行的方法包括全局压缩和使用自注意操作的非局部信息交互。然而,这些方法过于关注外部特征,缺乏对潜在特征的开发。全局压缩方法通过全局均值或…

(一)基于IDEA的JAVA基础3

通过之前的内容,我们在建好的文件夹下建一个java文件,我们来在IDEA中写一下之前用记事本写的helloworld,我们先看一下java代码的规范: 1.java程序文件名一定要有意义,首字母一定要大写。 2.class后面的名字:由大小写字母&#x…

【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景

1 场景描述 对于有两个3GPP无线接入网服务的大面积农田和农场,物联网设备可以通过NTN和TN接入网同时受益于5G系统的双转向数据连接能力。   在这个用例中,我们有一个广域的农业自动化应用系统来控制农业车辆,例如,一个装有数百个…

遇见AI暴雨受邀参加NVIDIA GTC 2024

2024年3月18日,备受瞩目全球科技盛会——2024 GTC在美国加州圣何塞拉开帷幕,此次大会旨在展示最新的GPU(图形处理单元)技术和应用,以及人工智能、数据科学、深度学习、虚拟化等领域的创新和发展。作为NVIDIA多年的战略…

浅尝大菠萝Pinia

1、pinia简介 Pinia(发音为 /piːnjʌ/,类似于英语中的“peenya”)是最接近有效包名 pia(西班牙语中的_pineapple_)的词。 Pinia 是由 Vue.js 团队成员开发,新一代的状态管理器,即 Vuex5.x。 …

C语言-----冒泡排序

今天,让我们来学习一下C语言中一个简单的排序算法------冒泡排序。 什么是冒泡排序呢? 冒泡排序是C语言中一个可以将一个数组的内容按照升序或者降序进行重新排列的算法。简单来说,是一种排序的思维。 冒泡排序的核心思想:让同…

MS2574/2574T/2574S高速、四通道差动线路驱动器

品简述 MS2574/MS2574T/MS2574S 是一款高速、低功耗的四通道 差动线路驱动芯片,用于平衡或非平衡的数字数据传输。可 以满足 ANSI TIA/EIA-422-B 和 ITU (原 CCITT )建议 V.11 的要求。 三态输出可提供用于驱动双绞线或平行双线传输线路等…

【面试精讲】深克隆和浅克隆的实现方式?深克隆和浅克隆有什么区别?

【面试精讲】深克隆和浅克隆的实现方式?深克隆和浅克隆有什么区别? 目录 本文导读 一、浅克隆(Shallow Clone) 二、深克隆(Deep Clone) 1、递归使用clone()方法实现深克隆 2、使用序列化实现深克隆 …

程序员思维之新机遇面前如何选择

你会不会因为 AI 的爆火,焦虑 AI 会替代自己的工作,焦虑其他人躬身入局把你淘汰。 我有过,甚至想全部精力都去学习 ChatGPT、Stable diffusion 、 Midjourney,每新出来一款大语言模型就想预约体验,那段时间像是无头的…

【复现】某指挥调度管理平台 SQL注入漏洞_66

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、维护人员和工作任务等。用户可以通过该平台发送指令…

代码随想录算法训练营Day52 ||leetCode 300.最长递增子序列 || 674. 最长连续递增序列 || 718. 最长重复子数组

300.最长递增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {if (nums.size() < 1) return nums.size();vector<int> dp(nums.size(), 1);int result 0;for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (…

概率基础——逻辑回归多分类法

概率基础——逻辑回归多分类法 逻辑回归是一种经典的分类算法&#xff0c;通常用于解决二分类问题。然而&#xff0c;在实际应用中&#xff0c;我们经常会遇到多分类任务。本文将简单介绍逻辑回归的理论、多分类方法以及优缺点&#xff0c;并提供一个Python实现的示例。 逻辑…

2 使用GPU理解并行计算

2.1 简介 本章旨在对并行程序设计的基本概念及其与GPU技术的联系做一个宽泛的介绍。本章主要面向具有串行程序设计经验&#xff0c;但对并行处理概念缺乏了解的读者。我们将用GPU的基本知识来讲解并行程序设计的基本概念。 2.2 传统的串行代码 绝大多数程序员是在串行程序占据…