中小企业 2022 年 Web 应用程序安全最佳实践

已发表: 2022-04-23

在企业堆栈安全方面,软件应用程序是最薄弱的环节。 Forrester《2020 年应用程序安全状况》中表示,大多数外部攻击是通过利用软件漏洞 (42%) 或通过 Web 应用程序 (35%) 发生的。

The State Of Application Security

随着应用程序变得更加复杂和开发时间缩短,开发人员面临尽快发布功能的压力。 为了实现差异化和引人注目的应用程序功能,开发人员越来越依赖第三方库。

这种向开源组件的转变使公司的安全实践变得更加复杂。 容器和 API 等新框架使应用程序安全性进一步复杂化。

由于开发人员被迫不断发布新功能,组织面临着安全无法跟上步伐的非常现实的风险。 可以通过将应用程序安全最佳实践纳入软件开发生命周期并实施它们来实现安全性。

目录

为什么网络安全测试很重要?

测试 Web 应用程序及其配置的安全漏洞是 Web 安全测试的目标。 应用层攻击(即针对基于 HTTP 的应用)是主要目标。

向 Web 应用程序提交不同类型的输入以引发错误并导致其出现意外行为是很常见的。 在这些所谓的“负面测试”中,系统会被检查是否存在非预期行为。

还需要注意的是,Web 安全测试不仅仅是测试应用程序中实现的安全特性(例如,身份验证和授权)。

还需要测试其他功能(例如,业务逻辑和输入和输出验证)是否以安全的方式实现。 目标是安全访问 Web 应用程序功能。

有哪些不同类型的安全测试?

  • 动态应用程序安全测试(DAST) 为了符合监管安全评估,这种自动化的应用程序安全测试非常适合面向内部的低风险应用程序。 手动 Web 安全测试和 DAST 的组合是中等风险应用程序和正在进行微小更改的关键应用程序的最佳方法。
  • 静态应用程序安全测试(SAST) 这种应用程序安全测试方法可以手动和自动进行。 应用程序可以通过这种方式进行测试,而无需在生产环境中运行它。 此外,它还允许开发人员通过扫描源代码系统地检测和消除软件安全漏洞。
  • 渗透测试 特别是对于正在发生重大变化的应用程序,这种手动应用程序安全测试是理想的选择。 评估包括业务逻辑和基于对手的测试,以识别高级攻击场景。
  • 运行时应用程序自我保护 (RASP) 在这种不断发展的应用程序安全方法中使用了许多技术技术来检测应用程序,从而可以在攻击执行时对其进行监控,理想情况下,可以实时阻止攻击。

应用程序安全测试如何降低您组织的风险?

application security

大多数 Web 应用程序攻击

  • SQL注入技术
  • 跨站脚本 (XSS)
  • 远程执行命令
  • 路径遍历

攻击结果

  • 受限制的内容
  • 已被盗用的帐户
  • 恶意软件安装
  • 收入损失
  • 客户失去信任
  • 名誉受损
  • 还有更多

当今的 Web 环境容易出现各种各样的问题。 除了了解如何利用应用程序之外,了解攻击的潜在结果将有助于您的公司抢先解决漏洞并准确测试它们。

在确定漏洞的根本原因后,可以在 SDLC 的早期阶段应用缓解控制。 此外,Web 应用程序安全测试可以利用这些攻击如何工作以针对已知兴趣点的知识。

要管理公司的风险,您必须了解攻击的影响,因为它可以用来衡量漏洞的总体严重性。

作为安全测试的结果,确定检测到的问题的严重性可以帮助您高效、有效地确定修复工作的优先级。 从严重性严重的问题开始,然后转向影响较小的问题,最大限度地降低公司的风险。

在确定问题之前对您公司应用程序库中的每个应用程序进行潜在影响评估有助于确定应用程序安全测试的优先级。

当网络安全测试有一个既定的高调应用程序列表时,我们可以安排测试首先针对您公司的关键应用程序,从而降低对您业务的风险。

在 Web 应用程序安全测试期间应审查哪些功能?

Web applications

在 Web 应用程序的安全测试期间应该检查几个特性,但列表并不详尽。 您的组织可能会因每项措施的不当实施而面临严重风险。

  • 应用程序和服务器配置- 缺陷可能与加密配置、Web 服务器配置等有关。
  • 输入验证和错误处理- 最常见的注入漏洞,包括 SQL 注入和跨站点脚本 (XSS),是输入和输出处理不佳的结果。
  • 身份验证和会话管理- 漏洞可能导致冒充用户。 强有力的证书政策也很重要。
  • 授权- 验证应用程序防止纵向和横向权限提升的能力。
  • 业务逻辑——这种类型的逻辑对于大多数业务应用程序来说都是必不可少的。
  • 客户端逻辑——这种类型的功能在现代、大量使用 JavaScript 的网站以及使用其他客户端技术(例如 Silverlight、Flash、Java 小程序)的网站中变得越来越普遍。

Web 应用程序安全的 10 大最佳实践

以下是您的组织应该已经实施的十大应用程序安全最佳实践。

#1 追踪您的资产

如果你不知道你拥有什么,你就无法保护它。

您为哪些功能或应用程序使用特定服务器? 您在哪些 Web 应用程序中使用开源组件?

Track Your Assets

您认为跟踪您的资产不重要吗? 记住每个应用程序中运行的软件非常重要——只要问问 Equifax,它就因未能保护超过 1.45 亿客户的数据而被罚款 7 亿美元。

在未修补开源组件 Apache Struts 后,信用评级机构的其中一个客户门户网站遭到入侵。 该公司表示,它不知道客户门户网站使用了易受攻击的开源组件。

您越早开始跟踪您的资产,您以后遇到的麻烦和灾难就越少。 随着组织扩展他们的发展,这个过程可能感觉像是一项西西弗斯式的任务。

您还应该对资产进行分类,注意对您的业务功能至关重要的资产和不太重要的资产。 然后,您可以评估威胁并在以后进行补救。

#2 执行威胁评估

如果您列出需要保护的内容,则可以确定您面临的威胁以及如何缓解这些威胁。

黑客如何能够侵入您的应用程序? 您有哪些现有的安全措施? 需要哪些额外的工具?

作为威胁评估的一部分,您必须回答这些问题和其他问题。

但是,您还必须对可以享受的安全级别持现实态度。 无论您使系统多么安全,您仍然可以破解它。 此外,您需要诚实地了解您的团队随着时间的推移可以维持的措施。

您可能会因过度推动而冒着被忽视安全标准和实践的风险。 认真对待安全,不要急于求成。

使用以下公式评估您的风险:

风险 = 攻击概率 x 攻击影响。

风险也可以被认为是某事发生的概率与后果的严重性。

尽管如果鲸鱼真的从天上掉下来压死你,那将是灾难性的,但它不太可能发生。

另一方面,远足时被蚊子叮咬的可能性很大,但除了一些发痒的肿块外,不太可能造成重大伤害。

#3 时刻关注你的补丁

在您的操作系统上安装最新的补丁? 你在使用第三方软件吗? 你有可能落后了,这意味着你已经暴露了。

Patching

确保软件安全性的最重要步骤之一是从商业供应商或开源社区更新软件。

当发现漏洞并负责任地向产品或项目所有者报告时,该漏洞将发布在安全咨询网站和数据库(例如 WhiteSource 漏洞数据库)上。

如果可能,应在发布之前创建和发布修复程序,为用户提供保护其软件的机会。

但是,如果您在补丁可用时不应用补丁,您将无法从改进的安全性中受益。

如果您担心更新到最新版本会破坏您的产品,自动化工具可以提供很大帮助。 一周中的任何一天,您都应该优先考虑更新和修补,作为应用程序安全最佳实践的一部分。

#4 管理你的容器

近年来,随着越来越多的组织采用该技术,容器因其灵活性而越来越受欢迎,这简化了在整个软件开发生命周期 (SDLC) 中跨各种环境开发、测试和部署组件的过程。

人们普遍认为,容器提供的安全优势赋予了它们优势。 此外,由于其独立的操作系统环境,它们按设计进行了细分,从而降低了风险水平。

然而,容器仍然容易受到诸如突围攻击之类的攻击,其中隔离已被打破。 容器中存储的代码也可能包含漏洞。

对于 CI/CD 管道安全性,您应该从头到尾扫描漏洞,包括在您的注册表中。

除了这些扫描之外,使用容器时应用程序安全的最佳实践还包括一些重要任务,例如,如果您使用 Docker Hub,则使用 Docker Content Trust 等工具签署您自己的映像,或者如果您的团队使用 Microsoft Azure,则使用共享访问签名。 .

#5 优先考虑你的补救行动

近年来,漏洞的数量越来越多,而且这一趋势没有显示出很快放缓的迹象。

因此,开发人员忙于补救。 对于希望在保持理智的同时保持其应用程序安全的团队,优先级是必不可少的。

威胁评估是根据漏洞的严重性(CVSS 评级)、受影响应用程序的严重性以及许多其他因素来执行的。

当涉及到开源漏洞时,您需要知道开源漏洞是否真的会影响您的专有代码。

即使易受攻击的组件的 CVSS 评级很关键,如果它没有收到来自您产品的调用,它也无效且风险不高。

明智的策略是根据现有因素优先考虑最紧迫的威胁,然后将低风险的威胁留到以后。

#6 加密、加密、加密

OWASP Top 10 多年来一直包括静态和传输中的数据加密,使其成为任何应用程序安全最佳实践列表的要求。

当您未能正确锁定流量时,中间人攻击和其他形式的入侵可能会暴露敏感数据。

例如,当您以纯文本形式存储密码和用户 ID 时,会将您的客户置于风险之中。

确保将 SSL 与更新的证书一起用作基本加密清单的一部分。 既然 HTTPS 是标准,请不要让自己落后。 还建议使用散列。

此外,你永远不应该像他们所说的那样“滚动你自己的加密货币”。 考虑由具有正确完成工作经验的专门团队支持的安全产品。

#7 管理权限

您不必向组织中的每个人授予对所有内容的访问权限。 只有遵循网络安全最佳实践和应用程序安全最佳实践的人才能访问应用程序和数据。

Manage Privileges

有两个原因。 您需要做的第一件事是防止黑客使用营销凭证来访问包含其他更敏感数据(例如财务或法律)的系统。

内部威胁也是一个问题,无论是无意的 - 例如丢失笔记本电脑或发送错误的电子邮件附件 - 还是恶意的。

与没有控制措施相比,在访问数据时仅向员工提供他们需要的数据的最小特权原则可以减少您的风险。

#8 为您的漏洞管理采用自动化

在过去几年中,应用程序的安全性对开发人员来说变得越来越重要,尤其是在涉及漏洞管理等任务时。

为了解决安全性的左移问题,开发团队在早期且经常性地进行测试,在开发过程的早期推动尽可能多的安全检查,此时修复漏洞更容易、更便宜。

由于大量漏洞,为了管理繁琐的测试过程,开发人员需要自动化工具。

要在您的专有代码中发现潜在的安全漏洞,可以在开发过程中使用静态应用程序安全测试 (SAST) 和动态应用程序安全测试 (DAST)。

SAST 和 DAST 可以关闭安全漏洞,但专有代码只占整个代码的一小部分。

在超过 92% 的现代应用程序中,开源组件占代码库的 60-80%。 您的应用程序安全清单应优先保护开源组件。

使用软件组成分析工具,团队可以在整个 SDLC 中运行自动安全检查和报告,识别其环境中的每个开源组件,并指出其中哪些具有对您的应用程序构成安全风险的已知漏洞。

通过将开源安全问题的自动化测试转移到左侧,您可以更好地管理漏洞。

#9 渗透测试

如果不提及渗透测试,顶级应用程序安全最佳实践列表将是不完整的,即使自动化工具有助于捕获绝大多数安全问题。

使用笔和纸进行测试可以让您戳戳并刺激您的应用程序以找出弱点。 如果一个坚定的黑客试图闯入您的应用程序,那么优秀的渗透测试人员会确切地知道他们需要采取哪些步骤。

可以聘请黑客公司,或者自由职业者可以参与 BugCrowd 和 HackerOne 等漏洞赏金计划。 如果您还没有,您的公司应该赞助漏洞赏金。

如果您聘请渗透测试人员,支付他们的费用要比处理真正违规的后果要好得多。

#10 小心使用代币

尽管这很容易保护,但许多开发人员并没有为第三方正确保护他们的代币。

Tokens

通过搜索流行的开发者网站,您可以轻松地在线找到不安全的代币。 开发人员无需将令牌详细信息存储在其他地方,只需将它们包含在他们的开源存储库中即可。

一个基本的应用程序安全最佳实践是正确保护您的第三方令牌。 你不应该把你购买的代币留在你的代码中让任何人拿走。

应用安全最佳实践作为基本实践

此处概述的每个最佳实践都应集成到您组织的持续开发过程中。 如果您不将风险降到最低,您公司的应用程序和数据就会面临风险。 请按照以下步骤将风险降至最低。

避免其他人可能犯的错误是领先于黑客的一种方法,因此您更难成为攻击的目标。 永远不会有完全防黑客的外围或应用程序安全措施。

但是,遵循这些基本的最佳实践可以让您的应用程序不值得黑客为之烦恼。