博客

使用 Webapplication防火墙平衡安全性和性能

Lori MacVittie 缩略图
洛里·麦克维蒂
2018 年 3 月 26 日发布
  • 安全很重要,但性能也很重要。
  • 超过一半 (57%) 的组织使用 Web应用防火墙来保护云端和本地的应用程序(2018 年应用交付状况)
  • 扫描出站响应是检测正在进行的违规行为并阻止它的最后机会之一。 
  • 好事也可能过多。 仔细考虑如何平衡安全性和性能以优化两者。 

我们(就像所有人一样)都知道性能对于数字业务的持续成功有多么重要。 虽然我们这些从小就使用拨号连接和长时间下载的人们对于性能的要求更加宽容,但我们这些数字时代的原住民孩子却没有那么慷慨。 他们期望立即得到响应和快速下载。

我们的不耐烦可以用数字来证明——超过 80% 的人曾因为性能不佳而删除过应用。 我们中的一些人(十分之三)甚至愿意为使用应用程序的闪电般的速度付费。

但无论我们来自哪一代技术,我们都很难取悦。 在加快应用程序运行速度的同时,千万不要忽视安全性。 如果您这样做,并且我们的数据被泄露,我们所做的不仅仅是删除您的应用程序。

因此,就留给 IT 专业人员(特别是那些从事安全工作的专业人员)来平衡性能需求和安全需求。 应用程序必须快速安全。

超过一半的组织实现更安全的应用程序的方法之一是使用Web应用防火墙(WAF) - 以及其他应用服务 - 来保护应用免受攻击。 他们通过两种方式实现这一点:

首先,他们扫描入站请求以检测任何恶意活动。 其次,他们检查发出的响应。 毫不奇怪,始终应用这些安全策略的组织是最有信心抵御应用攻击的组织之一。

使用 WAF,您可以检查请求和响应的每一位。 您可以按照自己想要的方式解析、拆分、扭曲和修改内容。

但你能做,并不意味着你应该做。

安全不是免费的。 它需要 CPU 周期和内存来检查应用流量,并需要格外注意查找攻击或违规证据。

这就是为什么平衡安全性和性能如此重要。 您扫描或擦洗所花费的每一微秒都是用户必须等待响应的一微秒。

而且它们加起来。

毕竟,数据包通过网络并返回需要数微秒的时间,这是一个物理问题。 建立连接还需要几微秒。 还有一些需要处理...你明白了。 你所做的每一件事都需要时间,花费的时间越多,用户就会越没有耐心。

当谈到这场冲突时,有些人传统上会把孩子和洗澡水一起倒掉。 他们会关闭安全性直到性能达到可接受的程度。 但这不是正确答案。 存在一种平衡,可以既满足安全需求,又满足性能需求。

对请求,随意进行协议级别的解析和验证。 检查有效载荷并寻找任何攻击迹象。 首先进行基于签名的扫描,然后进行基于文本的比较。 基于签名的扫描可以尽可能提高安全性的性能,因为您不必进行解析和比较。 这只是一个直接的比较,而且是一个相当快的过程。 

在回应时,不要屈服于分析和仔细审视内容的诱惑。 这里,开发人员必须有一定程度的信任,即 JSON 格式正确或 XML 遵循适当的模式。 面对现实,如果这里有一个协议或格式错误,用户就会发现它。 这是开发人员担心的问题,一般不构成安全风险。

安全风险是指包含敏感数据 - 可能是信用卡号或账号、社会保险号、电子邮件地址等。 具有明确模式的数字和数据,可以快速扫描并隐藏在数据中。 就像基于签名的扫描一样,您在这里进行模式匹配,并且安全服务已经非常擅长尽快执行它们。

如果可以的话,您也需要检查内容长度。 只需根据返回的内容量就能识别出许多引人注目的漏洞。 如果您知道特定请求仅应返回大约 1K 的数据,那么 4K 响应可能应该在某处敲响警钟。 这是一个简单的检查,比解析和计算数据记录花费的时间要少得多。

一个好的经验法则是在请求时始终遵守安全规则零,并在有用户输入时检查一切可以检查的内容。 在出站时,寻找正在发生违规的指标并混淆敏感数据,但不要花时间担心数据格式和模式合规性。 让开发人员担心他们是否正确地格式化了响应。 这是他们的职权范围,不是你的。

只要不牺牲其中一个,安全性和性能就可以实现平衡。 这意味着两个方向。 不要为了性能而放弃安全性,但也不要为了(可能不必要的)安全性而牺牲性能。

如果您策略性地使用安全性来防止漏洞利用和检测漏洞,那么您就可以实现性能之间的平衡,从而保证用户满意以及数据和应用的安全。