提升软件开发中的安全性

在软件开发领域,大型知名公司往往被认为在保护用户信息方面做得更好。然而,许多安全事件可能与技术问题无关,而是与社会工程学等非技术问题有关。安全问题常常被忽视,直到开发后期才被考虑,这导致一些看似结构良好的应用程序容易受到SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)等简单且通常可以预防的攻击。

如果应用程序存在将安全作为次要问题的情况,那么本文将为介绍两种可以轻松集成到开发环境中的免费工具,帮助在发布产品之前发现潜在的安全问题。

通过扩展实现安全

在像Microsoft Visual Studio这样功能强大的集成开发环境(IDE)中开发软件的一个最大优势是,有大量的扩展可供选择。这些扩展几乎涵盖了所有方面,使开发应用程序变得前所未有的简单和安全。这里提到的两个扩展是Roslyn Security Guard和Puma Scan,它们都是免费且易于使用的,并且可以检查可能在开发过程中遇到的许多常见安全漏洞。

要开始使用这些扩展,需要在Visual Studio的“扩展和更新”区域搜索并安装Roslyn Security Guard或Puma Scan:

// 搜索并安装扩展 searchAndInstallExtensions("Roslyn Security Guard", "Puma Scan");

安装其中一个(或两个)扩展后,需要确保在Visual Studio中启用“完整解决方案分析”:

// 启用完整解决方案分析 enableFullSolutionAnalysis("Tools", "Options", "C#", "Text Editor", "Advanced", "Enable Full Solution Analysis");

此时,基本上已经准备好开始寻找应用程序中的潜在漏洞了。

由于这两个扫描器都利用了Roslyn编译器平台,它们可以在编写代码时实时工作,并警告潜在的代码漏洞。

// 创建一个新的Web API项目 createNewWebAPIProject(); // 打开默认的ValuesController.cs文件 openDefaultFile("ValuesController.cs"); // 扫描器识别出所有HTTP POST方法可能容易受到CSRF攻击 recognizeVulnerabilitiesToCSRF(); // 提供建议,使用[ValidateAntiForgeryToken]属性来减少这些攻击 provideRecommendations("ValidateAntiForgeryToken");

就是这样简单。让再看一个常见的示例,SQL注入:

// 检测字符串连接在查询中可能的SQL注入 detectSQLInjection();

这些实时功能非常出色,但值得注意的是,这些扩展只是扩展了Visual Studio内置的代码分析。这意味着,每当使用项目或解决方案级别的“运行代码分析”功能时,将收到其中的所有错误和警告:

// 运行代码分析 runCodeAnalysis();

注意:如果发现错误列表中没有出现任何与安全相关的错误,请确保在该部分的下拉菜单中选择了“构建 + Intellisense”。如果没有错误,那么可能没有任何错误。

超越IDE

现在已经对代码进行了实时安全分析,接下来呢?那么,如何在CI流程中将此添加到构建服务器呢?

Puma Scan扫描器提供了一个专业许可证,允许从构建服务器上运行各种安全规则,针对任意数量的项目,而且操作非常简单。首先,需要在项目中包含以下NuGet包:

// 包含NuGet包 includeNuGetPackages("Microsoft.Net.Compilers", "Microsoft.CodeAnalysis", "Puma.Security.Rules.Pro");

包含这些包后,需要进入首选CI门户,并为该项目设置以下MSBuild命令参数:

// 设置MSBuild命令参数 setupMSBuildArguments("MSBuild.exe /p:DeployOnBuild=true /p:Configuration=Release /p:OutDir=../Publish /fl1 /fl2 /fl3 /flp1:logfile=build.log /flp2:logfile=build_errors.log;errorsonly /flp3:logfile=build_warnings.log;warningsonly %WORKSPACE%\\YourSolution.sln");

这将生成与Puma Scan相关的多个日志文件,其中包含应用程序中可能存在的任何安全信息,如警告和错误。

生成这些文件后,可以使用以下命令将警告导出到Puma解析器实用程序,这将允许根据这些结果为组织定义阈值,以确定是否应该推出构建:

// 导出警告到Puma解析器 exportWarningsToPumaParser("C:\\Program Files\\dotnet\\dotnet.exe", "C:\\Tools\\Puma.Security.Parser\\Puma.Security.Parser.dll", "--file %WORKSPACE%\\build_warnings.log", "--workspace %WORKSPACE%", "--output puma_warnings.log");
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485