web-dev-qa-db-ja.com

Webアプリケーションでデータの検証(チェック)が重複しないようにするにはどうすればよいですか?

私はソフトウェアアーキテクチャについて、特に足場について大規模アーキテクチャと最新のWebアプリケーションのパターンについて学習しています。

データ検証のパターンまたはrulesがないことに気づきました。時々validationsまたはchecks ()を追加しますserver-sideのクライアント側のレイヤーやその他、またはデータベーススキーマに要件を追加することで、いくつかの冗長な検証が見られます。

usernameを含む入力があり、このusernamemax 10 characters、私が理解している限り、スキーマのこのプロパティのデータベースに要件/検証を追加しなくても、フロントエンドレイヤー(クライアント側)での1つの検証で十分です(user in MongoDB)。

私の質問は、Webアプリケーションの標準的な検証フローをどのように整理または作成するのですか?

実用的な本、ブログ、または専門家による一連のビデオをお勧めいただければ幸いです。

検証は常にサーバー側で行う必要があります。クライアントが正しいことをするのを信頼することはできません。

検証にはさまざまな種類があり、アーキテクチャによっては、検証が行われる場所がさまざまです。たとえば、社会保障番号や顧客IDなどのドメインフィールドの検証は、略語にMが含まれているアーキテクチャ(MVVM、MVC、MVPなど)の場合、モデルで通常行われます。ただし、ユーザーの検証と検証(およびロールと特権の付与)は、通常、モデルとビューの間(MVCの場合はコントローラー内)のどこかで行われます。

便宜上、クライアントで検証を実行することもできます。しかし、この検証は「公式」ではありません。サーバー側の検証には最終決定権があります。

2
Robert Harvey

...私が理解している限り、フロントエンド層(クライアント側)で1つの検証で十分です...

短い答え:あなたの理解は間違ったです。

あなたは何も信用しないanywhereからのものcompleteを制御できない(マシン/ブラウザ/ユーザーエントリ)。他の誰かのマシンで動くウェブブラウザ?あなたは隣にzeroコントロールがあるので、信頼はゼロです。サーバーアプリケーションが満足できないまですべてが汚染されていると仮定します。

「人」(または「ボット」)がこのデータを(「アット」?)に送信していると、サーバーアプリケーションがHTMLから送信していると考える理由は何ですか送信済みそれら?

件名のbest投稿の1つへの必須の参照:

Webアプリケーションのプログラマーがサイトを公開する前に考慮すべき技術的な詳細は何ですか?

0
Phill W.