2 つの非常に異なる形式の検証があることを忘れないでください。
まず、ユーザーが適切な入力を行うことを確認するための検証。通常のパスワード/パスワード確認システムを検討してください。Confirm-password フィールドの唯一の意味は、ユーザーが誤って自分自身に迷惑をかけないようにすることです。
同様に、有効な電子メール アドレスや必須フィールドなどのチェックも、ユーザーが意図したとおりに入力していることを確認するためのものです。
次に、法的な変更のみがシステムに加えられていることを確認するための検証があります。あるユーザーは別のユーザーに属するデータを変更できず、従業員は自分自身を昇給させることはできません。
最初の種類の検証は、Javascript でのみ行う必要があります。ユーザーは、必要に応じてそれらを倒すことができますが、自分以外の人を傷つけることはありません.
2 番目の種類の検証は、バックエンドで実行する必要があります。常にではありませんが、通常は正常にエラーを出す必要はありません。ユーザーが UI をすり抜けたり、AJAX をリバース エンジニアリングしたりした場合は、礼儀正しくする必要はありません。500 を返し、侵入をログに記録するだけです。
いくつかの重複があります。たとえば、ユーザーが (おそらく) 一意のユーザー名を作成している場合、他の誰かが以前に使用されていない名前を使用したため、すべての Javascript チェックを通過した後、その一意性チェックが最後の 1 秒で失敗する可能性があります。
しかし、それは規則ではなく例外です。ほとんどのバックエンドの検証は、非常に薄いセキュリティまたはセキュリティに似たチェックであり、フロントで行われるものとは大きく異なります。