我正在尝试使用Naxsi WAF保护OpenStack API。 WAF阻止它认为恶意的请求。我希望API调用者(用户)知道他何时被WAF阻止。
这是一个示例调用,将被WAF阻止:
$ openstack server list --name 'x.*>'
'NoneType' object is not subscriptable
我想要一条更翔实的错误消息,例如:
$ openstack server list --name 'x.*>'
Your request was blocked by WAF
我可以从WAF返回自定义HTTP状态代码和JSON字符串。例如。对于阻塞的请求,我可以返回200
和{"floatingips": [{"id": "Blocked by WAF"}]}
到Neutron。从客户端来看,会像这样:
$ openstack floating ip list --network 'test-network1>'
+----------------+---------------------+------------------+------+------------------+---------+
| ID | Floating IP Address | Fixed IP Address | Port | Floating Network | Project |
+----------------+---------------------+------------------+------+------------------+---------+
| Blocked by WAF | None | None | None | None | None |
+----------------+---------------------+------------------+------+------------------+---------+
这种方法的主要问题是它不是通用的。在这种情况下,它仅适用于Neutron(并且可能仅适用于Neutron命令的子集)。输出看起来也不太好:-)。还有更好的主意吗?