- - PR -
Web.アプリのクライアント側の処理とサーバー側の処理
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-16 10:02
初めまして。仕事でWebアプリケーションの開発をしています。
はっきり言って何も知らない状態でこの仕事をはじめました。 最近、データの入力チェックで、「クライアント側でのチェックとサーバー側でのチェックをして下さい」と言われています。 その意味がよく分かりません。どなたか、超初心者の私に分かるように説明して頂けたらと思います。 VS2005で言語はVBです。(ASP.NETというのも使っています。) フォームから顧客情報を入力して、ボタン操作で次の画面に遷移するという処理なんですが、 VS2005を起動して、プロジェクトを選択します。 「.aspx」「.aspx.vb」と2種類あります。 「.aspx」にはフォームの「デザイン」と「ソース」があり切り替えできるようになっています。 デザイン画面でコントロールを配置し、プロパティの設定等をすると「ソース」側に内容が記述されます。(HTMLのソースのようです) データの入力チェックには検証コントロールを使っています。 「.aspx.vb」側には何も記述していませんが、勝手にチェックがかかっています。 「.aspx.vb」側に記述するとサーバー側の処理で、「.aspx」側はクライアントの処理になるのですか? Webの世界では、クライアント側でかけたチェックと同じ事をサーバー側でもしなければいけないのですか? 初歩的な質問なんですが、どうしても気になって仕方がありません。宜しくお願いします。 | ||||||||
|
投稿日時: 2006-08-16 11:23
おはようございます。
クライアントがサーバーに送信する直前と、サーバーがクライアントから受け取った直後の両方のタイミングでデータを検証して下さい、という意味だと思われます。
JavaScript の実行許可など、クライアントである Web ブラウザの設定が Web アプリケーションの期待通りになっていない可能性を考慮しないといけません。 つまり、Web ブラウザで動作するチェック機能は実行が保証されません。 入力データの検証が必要な場合は、クライアントサイドのチェック機能と併せてサーバーサイドのチェック機能を用意するとより確実なチェックが可能となります。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||
|
投稿日時: 2006-08-16 11:41
はい、そうです。 たとえば、startというパラメータに"A"という1文字しか受け付けない仕様の 入力画面があったとします。URLは http://foo.xx/input です。 その画面用のサーバ側プログラムは、"A"以外の文字で処理を行うと、予想でき ない動作を行うという困ったバグを持つプログラムでしたが、クライアント側 では"A"以外の文字が入力された場合、エラーメッセージを表示したり、サーバ 側にリクエストを送らないようにしているので、開発者は 「"A"以外は来ることは無いから安心安心!」 と思っていました。 ところが、運用を開始したある日、処理結果がおかしいというトラブルが 入ってきたので原因を調べてみたら、startパラメータに"X"が送られてい たことが判明しました。さて、どうやってクライアントのチェックを回避 して"X"をサーバに送りつけたのでしょうか?・・・。 正解は、新入社員がブラウザのアドレスバーに http://foo.xx/input?start=X と直接入力したのが原因でした。 開発者はつぶやきました、 「サーバ側でも文字チェックしておけばよかった・・・」 と。以上、外部公開するWebアプリではありえない仕様でのお話でした。 誰でもアクセスできる画面というのはRSSリーダーの ような専用ソフトやTelnetなどの汎用ツールなどなど、HTTPプロトコル さえ使えるならばあらゆる手段でアクセス可能なので、何が送られて 来るかわかりません。したがって、必ず特定のクライアント経由で アクセスされるという保障は無くなります。 クライアント側だけチェックを入れても無駄なのです。 個人情報が見れちゃったり、データベースのテーブルを削除されたり・・・ 怖い怖い。 ASP.NETは使ったこと無いので分かりませんが、Webアプリに共通する基本的な お約束でした。 [ メッセージ編集済み 編集者: 小僧 編集日時 2006-08-16 11:47 ] | ||||||||
|
投稿日時: 2006-08-16 11:43
"だったら、サーバ側だけでいいじゃん" と言われそうなので、ue さんにちょっと補足します。
# (*゚Д゚)y-; ウマー _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-08-16 12:02
ueです。
じゃんぬさん、フォローありがとうございます。 それぞれの選択肢について利点と欠点をお伝えすべきでした。 >未記入さん じゃんぬねっとさんが仄めかしておられますが、ASP.NET の検証コントロールはなかなか凄いです。 MSDN ライブラリの ASP.NET Web ページにおけるユーザー入力の検証 をご参照下さい。 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||
|
投稿日時: 2006-08-16 12:30
検証云々の話は皆さんの仰る通りなので、言う事はないですが、
未記入さんのレベル感はわかりませんが、本を数冊買うなりして、体系的な勉強をした方がよいと思います。(その最中かもしれませんが) でなければ、他の皆さんの回答の理解もままならないはずです。 基本的な事を疎かにして、「サーバ側クライアント側の検証の違い」も何もないです。 _________________ 囚人のジレンマな日々 |
1