私はソフトウェアアーキテクチャについて、特に足場について大規模アーキテクチャと最新のWebアプリケーションのパターンについて学習しています。
データ検証のパターンまたはrulesがないことに気づきました。時々validations
またはchecks ()
を追加しますserver-sideのクライアント側のレイヤーやその他、またはデータベーススキーマに要件を追加することで、いくつかの冗長な検証が見られます。
username
を含む入力があり、このusername
にmax 10 characters
、私が理解している限り、スキーマのこのプロパティのデータベースに要件/検証を追加しなくても、フロントエンドレイヤー(クライアント側)での1つの検証で十分です(user
in MongoDB)。
私の質問は、Webアプリケーションの標準的な検証フローをどのように整理または作成するのですか?
実用的な本、ブログ、または専門家による一連のビデオをお勧めいただければ幸いです。
検証は常にサーバー側で行う必要があります。クライアントが正しいことをするのを信頼することはできません。
検証にはさまざまな種類があり、アーキテクチャによっては、検証が行われる場所がさまざまです。たとえば、社会保障番号や顧客IDなどのドメインフィールドの検証は、略語にMが含まれているアーキテクチャ(MVVM、MVC、MVPなど)の場合、モデルで通常行われます。ただし、ユーザーの検証と検証(およびロールと特権の付与)は、通常、モデルとビューの間(MVCの場合はコントローラー内)のどこかで行われます。
便宜上、クライアントで検証を実行することもできます。しかし、この検証は「公式」ではありません。サーバー側の検証には最終決定権があります。
...私が理解している限り、フロントエンド層(クライアント側)で1つの検証で十分です...
短い答え:あなたの理解は間違ったです。
あなたは何も信用しないanywhereからのものcompleteを制御できない(マシン/ブラウザ/ユーザーエントリ)。他の誰かのマシンで動くウェブブラウザ?あなたは隣にzeroコントロールがあるので、信頼はゼロです。サーバーアプリケーションが満足できないまですべてが汚染されていると仮定します。
「人」(または「ボット」)がこのデータを(「アット」?)に送信していると、サーバーアプリケーションがHTMLから送信していると考える理由は何ですか送信済みそれら?
件名のbest投稿の1つへの必須の参照: