为什么 kong 访问未配置的正则表达式路由?

Why kong access non configured regex route?

我正在使用 Kong v2.1.2

在我的上游服务器上我有 APIs

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

我已经在主机 header "example.com" 的 kong 路由上配置了路径 1 和 2 我可以使用 Kong 访问 1 和 2 APIs。 但有趣的是,我也可以使用同一主机 header 访问第三个 API,即使它没有在 Kong 中配置。

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

请帮助我理解这一点。

谢谢!

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

如果路由定义为路径:/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 不再有效匹配路线