为什么 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
不再有效匹配路线
我正在使用 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
是;那么你就可以在不知情的情况下将私人数据暴露在互联网上。
为避免这种情况,您可以使用 $
:
- name: get-resources
methods:
- GET
paths:
- /api/v1/resources$
/api/v1/resources/{id}/private-subresource
不再有效匹配路线