ASP.NETでの入力チェックの手法

意図しないデータが入れられる可能性があるというのは、ASP.NETなどのWEBアプリに限らず、どのようなアプリであれ存在します。
開発では入力チェックを行う必要は発生します。
それは、通信を行うからには必ず発生するものであり、手間がかかるものです。
今回は、ASP.NET(c#)での入力チェックについて、頭のなかを整理してみました。


入力チェックを行うには、どのような方法があるでしょうか。

1) サーバ送信前(クライアント側/JavaScript)の入力チェック
2) サーバ送信後(サーバー側/C#)の入力チェック
それぞれのメリット・デメリットは何でしょう?
1) JavaScript
・クライアントのブラウザ上で実行されるので通信が発生せず反応が早い
・ブラウザの開発ツールなどで、ユーザーが意図しないデータを入力してみたり、入力チェックをスキップする可能性がある
・古いブラウザ等で正常に動作しない可能性がある
2) C# (ASP.NET)
・サーバーに入力データを送り、チェックして返すので反応は遅い
・複雑な入力チェック(既存の重複データの確認など)を実装しやすい
となると、反応が早く、かつ確実に入力チェックを行おうとすると、手間は掛かりますが、両方実装するのがいいのではないかな?と思います。
ただし、テストパターンも増えてしまいます…
(テストツールを導入するいいきっかけになる?)