如何验证Web服务的请求内容?

时间:2016-11-18 17:42:08

标签: security nginx haproxy gateway

我想找到在到达服务器之前验证HTTP请求内容的通用方法。

目标是为产品提供强大的安全性。

我有一个向公众公开的API,我想通过允许遵守规则的任何代理过滤对我的API的请求。

例如我的一个API方法:

POST: my_server/data/colection
application/json

{
    "key1": "stringValue",
    "key2": 2,
    "key3": true
}

我想验证以下事实:

  • 请求正文是有效的JSON对象
  • “key1”是一个字符串,必填,允许[a-z,0-9],最大长度为50个字符。
  • “key2”是必需的数字,在1-1000
  • 的范围内
  • “key3”是布尔值,可选

如果请求的内容或架构不符合上述条件,我想拒绝具有适当状态代码的请求。

是否有任何服务或代理模块(nginx,haproxy或任何其他模块)允许执行此类操作?

P.S。即使是部分解决方案也可行。

1 个答案:

答案 0 :(得分:0)

这是Web应用程序防火墙(wafs)的典型功能。市场上有不少,我不想宣传其中任何一个,但大多数可以做到这一点以及其他很好的安全功能(比如根据内部规则过滤掉潜在的攻击,或收集和共享威胁情报)互联网)。

waf需要考虑的三件事是相对较高的价格标签,正确设置它所需的努力,以及它们不完美的事实,即。虽然他们可以在一定程度上防止说XSS,但如果受保护的应用程序容易受到攻击,那么很可能会绕过waf中的过滤器。但它确实提高了标准。

我对api网关不是很熟悉,但我怀疑其中一些也可能提供这种参数类型和范围执行功能(没有完整waf提供的其他保护方面)。