开发高质量的软件应用程序是一项艰巨的工作,因为要创建一个有效的解决方案,必须将许多功能组件结合在一起。这就是为什么开发人员需要一切可以获得的帮助和便利,尤其是在确保应用程序安全时。
Visual Studio Code(VS Code)是最受欢迎的开源代码编辑器之一,原因有很多。它兼容 Windows、macOS 和 Linux 三大操作系统(OS),我们可以根据自己的喜好轻松配置。最重要的是,我们可以安装扩展来增强它的功能。
VS Code 的扩展功能非常丰富,从简单的用户界面(UI)更改到高级漏洞检测,不一而足。本文主要介绍后者,重点介绍 VS Code 的五大扩展,帮助我们编写更安全的代码并维护安全最佳实践。
1. 使用 1Password 保护秘密和密码安全
在代码中以纯文本形式包含密码是一个重大的安全风险,因为这很容易泄露敏感信息。最好的做法是将这些值存储在外部库中,并使用变量来访问它们。
然而,在编写代码时,要不断地从代码编辑器切换到密码库,然后再切换回代码编辑器,以创建新的秘密和密码或检查现有秘密的值,这就变得非常乏味。1Password for VS Code 是一个旨在缓解这一问题的扩展,它可以直接从 VS Code 编辑器访问密码库。
以下是 1Password 提供的主要功能。
首先,您可以使用命令调板在 VS 代码中创建新密码。您只需选中一个值,然后运行 1Password: Save in 1Password
命令即可。
这样,就可以给项目贴上标签,将其自动存储到 1Password 中,并替换代码中的引用。
还可以通过自动密码检测功能进一步完善这一功能。1Password VS Code
扩展可检测并突出显示代码或环境配置文件中潜在密码值。
VS Code 的 CodeLens 功能(一种在代码编辑器中显示代码元素之间关系的强大工具)将在高亮选项上方显示 Save in 1Password。如上图所示,该选项可让我们快速访问 "保存在 1Password 中 "命令。
此外,还可以使用 1Password: Get from 1Password
和 1Password: Generate password
命令分别从保险库中检索现有项目和创建新项目。同样,这些功能减少了开发人员在处理密码值时的成本,因为他们无需离开代码编辑器,也不会中断工作流程。
最后,1Password VS Code
扩展允许您检查和预览存储在保险库中的密码(如果它们在代码中被引用)。将光标悬停在密文上会显示其当前值,但仅限于非敏感密文。密码等敏感值无法预览,以确保其安全。
2. 使用Decompiler
反编译可执行文件
反编译器有时用于将已编译的代码逆向工程为源代码,以便开发人员进行检查。反编译是安全领域的重要工具。通过它,安全专家可以评估软件的安全性,甚至了解恶意软件的行为。要做到这一点,通常需要定制软件,有时甚至是不同的软件,这取决于可执行文件的类型。
反编译器(Decompiler)是 VS Code 的一个扩展,它将反编译功能引入了 VS Code。只需在文件上单击右键并选择反编译,就能在 VS 代码中反编译 Windows PE、Linux ELF、IOS、JAR 文件和 Android APK 等二进制可执行文件。
反编译后的文件可在反编译器文件夹中找到。对于 JAR 文件,这将打开 JAR,进入 JAR 中包含的文件夹和文件,提供对原始 Java 文件的访问,如下图所示。
反编译有可能揭示代码中的安全漏洞,如缓冲区溢出。发现这些漏洞有助于我们确定软件是否安全,并在发布软件前采取措施修复这些漏洞。
我们还可以使用反编译来了解第三方代码的行为,如库和 API,它们通常以编译形式发布。反编译这些组件有助于我们评估它们是否适合开发项目,并找出任何安全漏洞。
3用 "Cloak "隐藏敏感值
开发人员在开发包含机密和密码的环境配置文件的应用程序时,可能希望将这些文件隐藏起来,不让其他人看到。但是,如果在协作环境或外部地点(如咖啡馆)工作,任何人都可以看到你的屏幕,这就很难做到。通过不断查看或不打开文件来保证这些值的安全,既麻烦又影响工作效率。
下面是一个包含 API 密钥和密码的 .env 文件示例。任何能看到屏幕的人都能读取这些变量的内容:
为了解决这个问题,我们可以使用 VS 代码扩展 Cloak。当我们打开环境配置文件时,Cloak 可以隐藏秘密值,使其不显示在屏幕上。要激活 Cloak,请使用 VS 代码命令调板并运行 Cloak.Hide Secrets(隐藏秘密)
命令: 隐藏秘密命令。这将使屏幕上的值空白:
该扩展不会以任何方式修改文件。它只是掩盖密码值,使其不被显示。Cloak 可以防止不怀好意的人查看外部环境中的秘密和密码,让我们可以继续工作,同时维护应用程序的安全。
4. 使用 ESLint 扩展的最佳安全实践
在保护 JavaScript 项目安全时,大多数现代扩展除了检测安全标记外,几乎没有其他作用。不过,开发人员通常需要能集成到软件交付管道中的工具,以自动进行安全检查。
ESLint 扩展是 VS Code 在编写 JavaScript 时使用的一种开源内核工具。JavaScript 具有动态和松散类型的特性,因此开发人员很容易出错。ESLint 通过分析代码确保其语法正确并符合最佳实践和标准,从而减轻了这种倾向。它能突出显示代码中的语法错误,便于我们发现并快速修复。此外,它还有助于检测错误和潜在的代码漏洞,确保更高水平的代码完整性。
ESLint 是执行代码标准的合适方法,尤其是在小组项目中。在该扩展的帮助下,每个团队成员都能遵循同一套自动化的通用样式和标准。
让我们以下面的代码片段为例:
在这里,greeting
常量使用双引号,而 secondGreeting
使用单引号。此外,请注意有些行以分号结束,而有些行则没有。尽管存在这些细微差别,代码仍能正常运行,因为这些行在语法上是正确的。
不过,在共享项目中工作时,所有团队成员保持一致的约定非常重要。我们可以使用 ESLint 通过定义规则或使用 ESLint 软件包中的默认语法检查设置来实现这一点。我们也可以选择自定义这些设置:
ESLint 还有自己的一套插件,如安全插件,可以发现不良的安全做法,包括使用不安全的正则表达式或 eval 函数。我们可以在 VS Code 中使用该插件,在代码开发过程中对其进行检查,确保应用程序的安全性,并在代码通过构建管道运行之前解决问题。
5. 使用 Snyk
扫描代码和第三方软件包
检测和修复代码中的漏洞对于构建安全的软件系统至关重要。我们必须在恶意行为者利用这些漏洞之前迅速解决这些问题。然而,在代码编辑器和漏洞扫描仪之间不断切换既乏味又耗时。
Snyk VS Code 扩展通过直接从 VS Code 编辑器提供漏洞扫描和修复功能,缓解了这一问题。该扩展可扫描代码中的以下类型问题:
- 开放源代码安全 - 我们项目中使用的开放源代码依赖中的安全漏洞。
- 代码安全 - 我们代码中的安全漏洞。
- 代码质量 - 我们代码的质量。
- 基础设施即代码(IAC)安全--IAC 模板文件中的配置问题,如 Kubernetes 和 Terraform。
Snyk 代码分析会在我们打开项目文件夹时自动运行。我们也可以通过运行 Snyk: Rescan(重新扫描)
。
Snyk
扩展还提供漏洞检测功能,可在我们编写代码时突出显示代码中的潜在漏洞。它会描述问题及其严重程度,并提供一些最佳预防方法。
该扩展还提供了对我们的代码进行的各种扫描的结果概览:
通过实时漏洞检测和详细的修复步骤,Snyk VS Code
可以帮助我们在不中断工作流程的情况下优先处理安全问题。
小结
最优秀的开发人员都致力于编写安全、简洁和可维护的代码,而这五个扩展可以帮助我们做到这一点。1Password
保护密码不被第三方窃取,因此密码不会存储在代码中。ESLint
可帮助编写语法正确的代码,避免错误并符合最佳实践。反编译器
允许我们评估可执行文件的源代码,确保它们不含恶意软件。Cloak
隐藏敏感值,使其不会显示在屏幕上。最后,Snyk VS Code
扩展可以快速、准确地扫描代码中的漏洞。
在安装 VS Code 扩展之前,对扩展及其背后的公司进行研究非常重要。扩展可以帮助提高安全性,但不好的扩展可能会泄露我们的应用程序机密和密码。
信任第三方来存储密码本身就意味着将安全责任委托给了第三方。因此,在安装任何扩展(尤其是与密码和秘密管理相关的扩展)之前,一定要核实第三方。
要创建更安全的应用程序,没有放之四海而皆准的解决方案。根据项目的不同,其中一些扩展可能比其他扩展更适用或更相关。不过,每种扩展都有独特的优势,能让 VS Code
编辑器更加方便。