クライアント側とサーバー側の両方の検証手法を使用していますか?


10

連絡先フォームなどを介してユーザーからの入力を検証するときに、クライアント側とサーバー側の両方の検証手法を並べて使用していますか?

もしそうなら、それは本当に必要ですか?あなたはエンジニアリングを超えていますか?


これは興味深いです:smashingmagazine.com/2009/07/07/...
TeaDrinkingGeek

回答:


27

はい、そうすべきです。

これにより、ユーザーがJavaScriptを無効にすることを防ぎながら、無駄なポストバックなしでユーザーのフィードバックを即座に維持できます。

これがASP.NET検証コントロールが機能する方法です。

他を使用せずに使用することには欠点があるので、それは確かに過剰設計ではありません。


8
+1。サーバー側の検証imoがないための言い訳はありません。
DBlackborough 2011年

11
サーバー側が必要、クライアント側が便利です。Webアプリケーションでは、クライアント側の検証を当てにすることはできません。
BillThor 2011年

@BillThor -うん、正確に右のthats
billy.bob

クライアント側の検証がない場合、インテリジェントユーザーは間違いなくアプリを不正使用できます
Umair

6

もしそうなら、それは本当に必要ですか?

はい。

あなたはエンジニアリングを超えていますか?

番号。

リッチなインターフェースの場合、フロントエンドの検証は即座にフィードバックを提供できます。

バックエンドは複数のフロントエンドで使用できます。そして、これはHTMLのみ(JavaScriptなし)のフォールバック計画の唯一の検証です。


6

私がセキュリティについて学んだ最初の基本の1つは、ハッカーがあなたのUIを決して使用しないということでした。

通常、クライアント側の検証は、独自のローカルバージョンのフォームがあり、それをサーバーに送信すれば、Webアプリで簡単にバイパスできます。

ただし、クライアント側の検証は、ユーザーエクスペリエンスを向上させ、検証を実行するためのサーバーへの不要なラウンドトリップを減らすのに役立ちます。


+1、検証が完全にクライアント側で行われた多くの例を見てきました
Karl

2

サーバー側の検証は最低限必要です。

また、間違っている可能性のある入力については、クライアント側のチェックも追加する必要があります。

例:メールがクライアント側とサーバー側の両方で正しくフォーマットされているかどうかを確認しますが、一意であるかどうかを確認するのはサーバー側のチェックです。


1
「確認する」は検証ではなく検証なので、これは適用されません。 違いを理解してください。
billy.bob 2011年

2
あなたはあなたが投稿したものを読みましたか?電子メールが一意であることを確認すること検証です。たとえば、メールとパスワードが有効な資格情報であることを確認するのは検証です。いずれにせよ、それは単なる用語の問題です。
Andrea

1

はい、両方を使用することは悪い考えではありません。単純なユーザー入力エラーがクライアント側でキャッチされる可能性がある場合は、データを送信してサーバーにバグを報告する前に、それらのエラーについてユーザーに伝えるのが理にかなっています。たとえば、ユーザーが「メール」フィールドにメールアドレスのように見えないものを入力したか、パスワードフィールドに5文字のみの文字列を入力し、サイトでパスワードを6文字以上にする必要があることがわかっている場合、サーバーに何かを送信する前に、それをユーザーに伝える必要があります。

2つの理由でサーバー上でまったく同じ検証を複製することも重要です。1)ユーザーがJavaScriptを無効にしている場合はどうなりますか?

2)ユーザーが悪意を持ってクライアント側の検証をバイパスしようとしましたが、これは非常に簡単です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.