2009-08-12 18 views
1

私のasp.net mvcプログラムでは、ユーザーはあるフィールドに日付を入力し、別のフィールドに時刻を入力します。時間は24時間モードになり、ユーザーは00:00 - 23:59を入力でき、日付は通常のmm/dd/yyyyでなければなりません。日付と時刻を検証する最良の方法は何ですか

クライアント側のjavascript/jquery/masked入力やmvcコントローラのc#など、入力を検証するためのさまざまなオプションがありますが、どの方法が最良かを理解するのは難しいです。

誰でもこのアドバイスやアドバイスがありますか?

答えて

9

常に、常にサーバー側です。クライアント側の検証は、必要なオプションです。

クライアント側の検証パスは、単純なスニファ/注入ツールを使用してサーバー側に到達できる実際のデータを表していないことを覚えておいてください。

0

データベースを使用している場合は、パラメータ検証されたクエリまたはストアドプロシージャを使用して、データ検証を確実に行う必要があります。それは潜在的なSQLインジェクションにも役立ちます。

両側で検証する必要がありますが、クライアントでの作業に関係なくサーバーで検証することが重要です。クライアントの検証は「持っているだけでいい」、ユーザーのやりとりやフローに役立ちます。

3

両方を使用してください!クライアント側とサーバ側の検証は非常に簡単に実装できます。

  • クライアント側の検証により、ユーザーエクスペリエンスが向上します。完成したポストバックを待っている人は、「私たちのサーバはあなたの外国人のような日付をしない」のようなものを伝えるのが好きな人はいません。

  • サーバー側の検証によってシステムが保護されます。サーバーは、細工された要求からのSQLインジェクション攻撃を望んでいません。ユーザーエクスペリエンスのためにこれを使用しないでください。これは純粋にあなたのシステムを保護し、javascriptを無効にしているユーザーのサポートを提供するために存在します(公平で、ユーザーエクスペリエンスが気になる人)。

すてきなクライアントサイドライブラリがあり、それは簡単にできます。私のお気に入りはjquery validation pluginですが、http://www.livevalidation.com/もかなり良いです。

1

MVC 1のxValやMVC 2のDataAnnotationsの組み込みサポートなどの検証フレームワークを使用することをお勧めします。これは、常に一貫性のある方法でサーバーとクライアント側の検証を生成します。

0

どちらもサーバー側を重視しています。時には人々がJavaScriptをブロックするか、以前のエラーによって検証スクリプトが実行されないことがあります。

サーバーで、DateTime.Parseまたはそれより優れたDateTime.TryParseを実行します。

関連する問題