【问题标题】:Does API Gateway automatically validate input model?API Gateway 会自动验证输入模型吗?
【发布时间】:2015-11-23 01:49:16
【问题描述】:

我在 AWS API 网关中创建了具有以下端点的简单 API:

POST /v1/users

在方法执行/方法请求中我添加了请求模型:

此模型架构如下所示:

但是,当我使用 json body { "foo": "bar" } 向该端点发出请求时,它不会拒绝它并且我的 lambda 函数被执行...

那么,如果 JSON 模式不用于验证请求,为什么还有定义它的选项呢?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway


    【解决方案1】:

    我自己只是想弄清楚这个问题,我看到你也是几个小时前才问这个的!

    到目前为止,我找到的唯一参考资料在这里:

    http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html

    对于非 GET 方法类型,展开请求模型,对于内容类型和模型名称,键入内容类型并选择将调用者提供的数据转换为预期格式的模型名称。

    所以看起来它更多的是用于转换而不是验证 - 但它实际上是如何工作的并不是特别清楚。

    更新

    我刚刚注意到这个 HackerNews 线程:

    https://news.ycombinator.com/item?id=9880683

    其中一位 AWS 工程师在那里回复说:

    验证不需要模型。它们仅用于在客户端 SDK 中生成对象。

    【讨论】:

    • 我还在文档中找到了In API Gateway, a model defines the format, also known as the schema or shape, of some data. You create and use models to make it easier to create mapping templates. Because API Gateway is designed to work primarily with JavaScript Object Notation (JSON)-formatted data, API Gateway uses JSON Schema to define the expected schema of the data.,所以似乎所有这些模式都是无用的(可悲),最好的方法是传递数据......
    • 这很可能是这样的——他们确实计划发布基于模式的验证作为一项功能,但正在等待足够多的人尝试使用它/抱怨它不起作用——实际继续实施它。希望它尽快成为一项功能。
    • 多么浪费资源。基于模型的验证将是我将 API Gateway 与 Swagger 模板一起使用的第一大理由。这对我来说没有多大意义:(
    【解决方案2】:
    【解决方案3】:

    无论如何,从安全角度来看,API 网关的输入/模型验证仅应被视为额外的防御层。

    您的服务必须始终验证输入/模型,这不是什么东西 你可以委托!

    【讨论】:

    • 我在这里看到了一个引述,但你在引述什么?
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2019-02-24
    • 2017-10-18
    • 2011-02-15
    相关资源
    最近更新 更多