安全测试与运营监控

这一部分反思了安全性和运维问题的关键方面。

到目前为止,我们已经创建了一个设计良好且缺陷极少的应用程序。我们的用户体验反馈是积极的——它易于使用。但如果我们不能保持应用程序的运行,所有这些潜力都可能在一瞬间丧失。如果黑客攻击我们的网站并伤害用户,情况会变得更糟。

一个没有运行的应用程序是不存在的。运维的学科——现在通常称为 DevOps——旨在保持应用程序的良好运行,并在健康状况开始下降时提醒我们。

安全性测试——也称为 渗透测试(pentesting)——是手动探索性测试的一个特例。就其本质而言,我们正在寻找应用程序中的新漏洞和未知漏洞。这种工作并不适合自动化。自动化重复已知的内容;要发现未知的内容需要人类的智慧。

渗透测试是一门学科,它通过尝试绕过软件的安全性来测试其安全性。安全漏洞可能对公司造成昂贵的损失、尴尬的局面,甚至导致业务终结。用于制造漏洞的攻击手段通常非常简单。

安全风险可以大致总结如下:

  • 我们不应该看到的东西

  • 我们不应该更改的东西

  • 我们不应该频繁使用的东西

  • 我们不应该能够撒谎的东西

当然,这是一个过于简化的总结。但事实仍然是,我们的应用程序可能容易受到这些破坏性活动的影响——我们需要知道是否如此。这需要测试。这种测试必须是适应性的、创造性的、狡猾的,并且不断更新。自动化方法不具备这些特性,这意味着安全性测试必须作为我们开发过程中的一个手动步骤。

一个很好的起点是查看最新的 OWASP 十大 Web 应用程序安全风险( https://owasp.org/www-project-top-ten/ ),并根据列出的风险开始一些手动探索性测试。有关威胁模型的更多信息,如欺骗、篡改、抵赖、信息泄露、拒绝服务和权限提升(STRIDE),可以在 https://www.eccouncil.org/threat-modeling/ 找到。OWASP 还有一些关于有用工具的出色资源,位于 https://owasp.org/www-community/Fuzzing 。模糊测试是一种自动发现缺陷的方法,尽管它需要人类来解释失败测试的结果。

与其他手动探索性测试一样,这些临时实验可能会导致未来的测试自动化。但真正的价值在于应用于调查未知领域的创造力。

前面的部分已经说明了手动干预的重要性,以补充我们的测试自动化工作。但这如何与持续集成/持续交付(CI/CD)方法相适应呢?这是下一部分的重点。