【问题标题】:Validate length of parameter in POST operation (Azure API Management)验证 POST 操作中的参数长度(Azure API 管理)
【发布时间】:2021-11-22 22:08:32
【问题描述】:

我已使用此操作在 Azure API 管理上创建了一个 API:

POST https://example.azure-api.net/product/check
content-type: application/json
{
    "productId":"a77swsa2"
}

productId 是一个不能超过 8 个字符的字符串。如何保护 Azure APIM 上的 API,以便拒绝所有包含超过 8 个字符的 productId 的请求?现在我看到可以粘贴大字符串并将其全部发送到后端。

【问题讨论】:

  • OpenAPI 支持 maxLength 用于字符串。 Azure APIM 是否支持maxLength 验证?如果没有,您必须在后端验证长度。

标签: post openapi jsonschema azure-api-management


【解决方案1】:

您可以通过两种方式做到这一点:

  1. 手动使用choose 策略和context.Request.Body.As<Jobject>() 将请求正文解析为JObject,然后检查"productId" 以检查其长度,如果它大于8 个字符,则使用return-response 策略使请求失败。李>
  2. 如果您的 API 架构正确,您可以使用 validate-content 策略。

【讨论】:

  • 似乎选项 2 不起作用。至少使用这样的入站策略:<validate-content unspecified-content-type-action="prevent" max-size="1024" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation"> <content type="application/json" validate-as="json" action="prevent" /> </validate-content>
  • 如果不查看您的配置,我无法确定,但第二个选项取决于 API 和具有正确架构的参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多