web-dev-qa-db-ja.com

バックエンドRestful APIはデータ検証を実装する必要がありますか

私は、バックエンドのRestful APIと単一ページのフロントエンドアプリを含むプロジェクトに取り組んでいます。バックエンドAPIがあらゆる種類のデータ検証ロジックを実装する必要があるかどうか疑問に思っています。これは、フロントエンド入力フォームにも実装する必要があります。

3
ambes

はい、データは常にクライアント側または転送で操作できます。クライアント側の検証に依存することはできません。クライアント側はハッカーのコンピュータ側なので、まったく安全ではありません。クライアント側の検証は、ユーザーの便宜のためだけです。

@ erik-eidtの言及にもあるように、クライアント側の検証で競合状態が発生する可能性があります。つまり、ユーザーのログイン名はオンラインフォームに入力するときに無料(有効)にすることができますが、後で送信するときにすでに取得されます。

12
rsm

一般に、アプリケーションのすべての層で検証し、必要に応じて検証を繰り返すことが最善です。

一般に、データの整合性と特定の制約に従うことを保証する必要があるため、データベースでの検証が必要です。

バックエンドで検証する必要があります。これは通常、ビジネスロジックに関する「真実」が存在する場所であり、そこで検証することで、無効なデータを保存するために不要なデータベースへのアクセスを節約できるためです。

UIでの検証はオプションの部分です。バックエンドで処理できるため、UIの表示にエラーが返される可能性があります。ただし、ユーザーエクスペリエンスは、フロントエンドで検証する方が速いので、はるかに優れています(APIに問い合わせる必要はありません)。

4