IT公司安全编码协议

安全设计

在软件开发生命周期的每个阶段都集成安全性

我们的客户希望从一开始就在其 IT 应用程序开发流程中融入更高水平的安全性。我们制定了一套详细而完善的安全编码规范和流程,在其整个软件开发生命周期的每个阶段整合安全流程、测试、规划和扫描。

 

SEIRIM 成功实现了显著提升该公司网络安全水平、改进代码质量,并将自动化测试和持续集成实践嵌入其工作流程的目标。我们分阶段实施了多种工具和实践——从代码规范检查(linting)到 CI/CD——以全面提升代码卫生、应用安全性、测试可靠性和交付效率。

项目目标

目标

提升代码质量并引入代码规范检查

为了在开发早期实施统一的编码规范并防止语法错误,这些工具有助于减少因代码不一致而导致的缺陷,并通过统一的格式提升团队协作效率。

引入持续安全扫描

一个主要目标是常规性地模拟攻击并检测诸如 XSS 和 SQL 注入等漏洞,并在 CI 流水线中直接实现对开源漏洞的自动化检测和修复,防止将不安全的组件集成到生产环境中,从而确保 Web 应用在发布前是安全的。

部署自动化测试

为了提升整体代码质量,一个关键目标是通过单元测试和集成测试来验证核心应用逻辑,从而帮助捕捉回归问题,并确认新功能不会破坏现有功能。进一步的目标是开展端到端测试,模拟用户交互,确保应用程序在用户视角下以及不同浏览器中都能正常工作。

CI/CD 集成过程中的安全阶段

一个关键目标是通过在代码变更时自动触发测试、扫描和部署来实现软件交付流程的自动化,从而帮助在各个构建中保持一致性、速度和可靠性。另一项重点是确保安全性增强不会干扰流水线管理,同时继续维持统一的平台,而不增加配置的复杂性。

降低安全漏洞风险

总体目标是在软件开发生命周期(SDLC)的早期阶段发现并修复问题,因为此时更容易且成本更低;同时从整体上防止各类安全漏洞,在所有产品中保护用户和客户数据,并降低发布后发生高成本安全事件、系统停机或受到监管处罚的风险。

确保系统易用性

至关重要的是,系统必须保持易于使用,不能增加过于繁琐的复杂层,从而损害高效且盈利的软件开发;否则,如果使用难度过大,将无法被团队采纳,实际上也无法帮助提升组织的安全性。因为与部署后的修复相比,及早发现问题要经济得多,并且还能确保安全性成为产品质量中不可或缺的一部分,而不是事后才考虑的附加因素。

Global Accessibility

To ensure the website is multilingual and performs seamlessly across various internet conditions, catering to a global audience.

致力于提升安全性

为建立安全编码规范而实施的策略

SEIRIM 的目标是显著提升公司的网络安全防护水平、改进代码质量,并将自动化测试和持续集成实践融入其工作流程。通过分阶段实施从代码规范检查到 CI/CD 在内的一系列关键工具和实践,着重改善代码整洁度、应用安全性、测试可靠性以及交付效率。

第一阶段:代码质量与代码规范检查

1. ESLint 和 Prettier
首先,团队通过使用 ESLintPrettier 来统一 JavaScript 和 TypeScript 代码库的风格。这些工具被配置为标记语法错误、强制执行编码规范并自动格式化代码。在开发早期就集成它们,有助于开发者从一开始就保持整洁的代码。两款工具简单易用且许可证零成本,使其成为理想的入门选择。

 

2. SonarQube
在完成基础的代码检查之后,引入了 SonarQube 来进行更深层次的静态代码分析。它能够识别多语言代码库中的细微缺陷、安全漏洞和性能问题。最初使用的是 Community Edition,并计划升级到 Developer Edition,以获得更深入的洞察和更广泛的语言支持。其可视化仪表盘帮助团队为技术债务减轻工作确定优先级。

 

3. CodeClimate
为加强对代码长期可维护性的跟踪,引入了 CodeClimate。它汇总质量指标并展示长期趋势,帮助管理者发现存在问题的区域,也让开发者了解自己代码改动的影响。它在代码评审过程中尤其有用,可以及早标记与可维护性相关的隐患。

 

其他代码工具:

第二阶段:安全扫描工具

4. ZAP(Zed Attack Proxy)
在应用程序稳定后,引入了安全扫描。ZAP 作为第一道防线,通过模拟攻击来识别常见漏洞,例如 SQL 注入和跨站脚本(XSS)。该工具的自动化能力以及开源特性,使其能够在不增加预算压力的前提下无缝集成。

 

5. Snyk
由于公司使用了大量开源软件包,便采用 Snyk 来监控这些依赖项。它会扫描第三方库和 Docker 镜像中已知的漏洞。DevOps 团队利用其 GitHub 集成功能在拉取请求阶段发现问题,从而实现主动的漏洞管理。

 

6. WhiteSource Bolt / Mend
为了在 CI/CD 流水线中实现安全自动化,配置了 WhiteSource Bolt。它持续扫描 GitHub 和 Azure DevOps 上的代码库,识别并在许多情况下自动修复依赖问题。其免费方案覆盖了大部分的即时需求,从而在无需额外预算审批的情况下实现快速部署。

阶段三:自动化测试框架

7. Jest 和 Mocha
接下来要务是构建健壮的自动化测试体系。JestMocha 被用于 JavaScript 应用的单元测试和集成测试。它们帮助开发人员及早发现逻辑和行为问题,并在功能发布过程中提升了对代码质量的信心。

 

8. Selenium
在单元测试趋于稳定后,开始使用 Selenium 对用户流程进行端到端测试。QA 工程师模拟真实用户操作,使回归测试得以在每次发布前自动化执行。Selenium 基于浏览器的测试方式确保了跨平台兼容性。

阶段四:性能测试工具

9. Lighthouse
为了监控前端性能和 Web Vitals 指标,在整个开发生命周期中都会通过 Chrome 开发者工具定期运行 Lighthouse。它会对页面速度、无障碍访问性、SEO 等方面进行审计,为开发者提供可操作的反馈,以便优化用户体验。

 

10. GTmetrix
虽然 Lighthouse 提供了整体性能洞察,GTmetrix 则有助于更深入分析加载时间、瀑布流请求细分以及具体性能瓶颈。针对关键应用页面,会每周安排 GTmetrix 测试,并在每次冲刺回顾中审查测试结果。

 

11. WebPageTest
最后,会引入 WebPageTest 来验证全球范围内的性能表现。对于国际客户,由于不同地区的性能可能存在差异,该工具可以确保在制定优化策略时,将地理延迟和 CDN 表现等因素一并纳入考量。

阶段 V:持续集成与交付(CI/CD)

12. GitHub Actions
CI/CD 实施从 GitHub Actions 开始,在 GitHub 中直接实现构建、测试和部署的自动化。每次代码提交都会触发一系列检查,包括 ESLint 校验、Snyk 扫描和 Jest 测试。按需付费的模式使团队能够逐步扩展规模。

 

13. Jenkins
对于更复杂的自动化任务和内部服务器部署,引入了 Jenkins。凭借丰富的插件生态和强大的社区支持,Jenkins 支持自定义工作流、定时任务以及向非云端基础设施的部署。

 

14. GitLab CI/CD
对于使用 GitLab 代码库的团队,启用了 GitLab CI/CD。它从代码仓库管理到部署都提供了无缝体验,尤其适合偏好单一平台 DevOps 方案的团队。其紧密集成简化了权限控制、密钥管理和环境配置。

成果与收益

分阶段部署这些工具带来了显著改进:

 

  • 安全性:由于主动扫描和依赖监控,六个月内漏洞数量减少了70%以上。
  •  
  • 代码质量:借助 ESLint、SonarQube 和 CodeClimate,代码库的可维护性得到了提升,技术债务预警帮助开发人员及早处理问题。
  •  
  • 效率:CI/CD 自动化减少了手动测试和部署错误,将发布周期从两周缩短到不到五天。
  •  
  • 性能:通过 Lighthouse 和 GTmetrix 的优化,平均页面加载时间减少了30%以上。
  •  
  • 测试文化:开发人员的测试覆盖率显著提高,85% 的新功能都配有自动化测试用例。
来自客户

推荐词

感谢 SEIRIM 团队采用周密的方法来引导并激励我们的开发团队实施更安全的流程,而这一流程已经在实践中证明能够产出更安全的代码。希望我们能继续加强合作,确保始终发布干净、可靠的代码。