Azure API Manager URL路径解析异常:无效路径仍可正常访问接口问题问询
你遇到的路径异常匹配问题是Azure API Manager默认开启的URL规范化机制导致的。该机制的设计目的是兼容不同客户端的请求格式差异,降低路由匹配误判率,默认会自动解析请求URL中的路径遍历符(../、./)、合并重复斜杠、统一大小写后再进行路由匹配,因此你提供的无效URL{{Url}}/../auth/streams/../../regulators会被自动规范化为标准路径{{Url}}/regulators,所以能正常命中接口返回响应。
解决方案
方案1:关闭URL规范化功能
可在APIM对应API的设置页,找到「规范化请求URL」选项,关闭该开关后,APIM会直接使用原始请求URL进行路由匹配,不符合路径规则的请求会直接返回404。该方案改动最小,但会同时关闭多余斜杠处理、大小写统一等其他规范化能力,可能导致正常请求误判为404。方案2:通过入站策略拦截带路径遍历符的请求
如果需要保留URL规范化的其他能力,只禁止带路径遍历符的非法请求,可在对应API或全局层级添加如下入站策略,匹配到非法字符直接返回400错误:<inbound> <choose> <when condition="@(context.Request.OriginalUrl.ToString().Contains("..") || context.Request.OriginalUrl.ToString().Contains("./"))"> <return-response> <set-status code="400" reason="Bad Request" /> <set-body>请求URL格式非法,不允许包含路径遍历字符</set-body> </return-response> </when> </choose> <!-- 原有其他入站策略保留在此处 --> </inbound>该方案灵活性更高,也符合安全合规要求,推荐优先使用。
内容的提问来源于stack exchange,提问作者user2050079
相关产品推荐
相关产品推荐

