web-dev-qa-db-ja.com

API Gatewayは入力モデルを自動的に検証しますか?

次のエンドポイントを使用して、AWSAPIゲートウェイでシンプルなAPIを作成しました。

POST /v1/users

メソッド実行/メソッドリクエストにリクエストモデルを追加しました:

enter image description here

このモデルスキーマは次のようになります。

enter image description here

ただし、json body { "foo": "bar" }を使用してそのエンドポイントにリクエストを送信すると、それは拒否されず、ラムダ関数が実行されます。

では、リクエストの検証に使用されていないのに、JSONスキーマを定義するオプションがあるのはなぜですか?

22
user606521

これを自分で理解しようとしているだけです。数時間前に質問しただけです。

これまでのところ、私が見つけた唯一のリファレンスはここにあります:

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

GET以外のメソッドタイプの場合は、[リクエストモデル]を展開し、[コンテンツタイプとモデル名]の場合は、コンテンツタイプを入力して、呼び出し元から提供されたデータを期待される形式に変換するモデルの名前を選択します。

したがって、検証よりも変換の方が重要なようですが、これが実際にどのように機能するかは特に明確ではありません。

[〜#〜]更新[〜#〜]

私はちょうどこのHackerNewsスレッドに気づきました:

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

AWSエンジニアの1人がそこで応答し、次のように述べました。

検証にモデルは必要ありません。これらは、クライアントSDKでオブジェクトを生成するために使用されるだけです。

19
IAmFledge
7
RyanG

とにかく、API Gatewayでの入力/モデルの検証は、セキュリティの観点からの追加の防御層としてのみ考慮されるべきです。

あなたのサービスは常に入力/モデルを検証しなければなりませんそれはあなたが委任できるものではありません!

1
Daniel Gartmann