0

我正在使用 Kong v2.1.2

在我的上游服务器上,我有 API

GET /v1/country
GET /v1/country/{country_code}/brands
GET /v1/country/{country_code}/brands/{brand_code}/types

我已经在带有主机头“example.com”的kong路由上配置了路径1和2,我可以使用Kong访问1和2 API。但有趣的是,即使没有在 Kong 中配置,我也可以使用相同的主机头访问第 3 个 API。

所以问题是 Kong 如何访问那些未配置的 API,以及如何禁止未在 kong 上配置但存在于上游服务器中的请求。

请帮助我理解这一点。

谢谢!

4

1 回答 1

0

这里的技巧是,在 Route 配置路径参数中是一个正则表达式。

如果 Route 是用 path: 定义的,/api/v1/resources那么/api/v1/resources/10/private-subresource对于匹配的请求是有效的。

现在想象一下/api/v1/resources/{id}/private-subresource你的 ms 的一个端点,它不应该被 kong 暴露,而是/api/v1/resources;那么您可以在不知情的情况下将私人数据暴露给互联网。

为避免这种情况,您可以使用以下方法限制定义中 Route 路径的范围$

- name: get-resources
    methods:
    - GET
    paths:    
    - /api/v1/resources$

/api/v1/resources/{id}/private-subresource不再有效以匹配路线

于 2021-09-14T15:04:29.347 回答