- PR -

Web.アプリのクライアント側の処理とサーバー側の処理

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/08/16
投稿数: 1
投稿日時: 2006-08-16 10:02
初めまして。仕事でWebアプリケーションの開発をしています。
はっきり言って何も知らない状態でこの仕事をはじめました。
最近、データの入力チェックで、「クライアント側でのチェックとサーバー側でのチェックをして下さい」と言われています。
その意味がよく分かりません。どなたか、超初心者の私に分かるように説明して頂けたらと思います。

VS2005で言語はVBです。(ASP.NETというのも使っています。)
フォームから顧客情報を入力して、ボタン操作で次の画面に遷移するという処理なんですが、
VS2005を起動して、プロジェクトを選択します。
「.aspx」「.aspx.vb」と2種類あります。
「.aspx」にはフォームの「デザイン」と「ソース」があり切り替えできるようになっています。
デザイン画面でコントロールを配置し、プロパティの設定等をすると「ソース」側に内容が記述されます。(HTMLのソースのようです)
データの入力チェックには検証コントロールを使っています。
「.aspx.vb」側には何も記述していませんが、勝手にチェックがかかっています。

「.aspx.vb」側に記述するとサーバー側の処理で、「.aspx」側はクライアントの処理になるのですか?

Webの世界では、クライアント側でかけたチェックと同じ事をサーバー側でもしなければいけないのですか?

初歩的な質問なんですが、どうしても気になって仕方がありません。宜しくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-08-16 11:23
おはようございます。

引用:

最近、データの入力チェックで、「クライアント側でのチェックとサーバー側でのチェックをして下さい」と言われています。
その意味がよく分かりません。


クライアントがサーバーに送信する直前と、サーバーがクライアントから受け取った直後の両方のタイミングでデータを検証して下さい、という意味だと思われます。

引用:

Webの世界では、クライアント側でかけたチェックと同じ事をサーバー側でもしなければいけないのですか?


JavaScript の実行許可など、クライアントである Web ブラウザの設定が Web アプリケーションの期待通りになっていない可能性を考慮しないといけません。
つまり、Web ブラウザで動作するチェック機能は実行が保証されません。

入力データの検証が必要な場合は、クライアントサイドのチェック機能と併せてサーバーサイドのチェック機能を用意するとより確実なチェックが可能となります。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-08-16 11:41
引用:

Webの世界では、クライアント側でかけたチェックと同じ事をサーバー側でもしなければいけないのですか?


はい、そうです。
たとえば、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 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-16 11:43
"だったら、サーバ側だけでいいじゃん" と言われそうなので、ue さんにちょっと補足します。
  • クライアント側のチェック (クライアント スクリプト)
    クライアント側で即エラー検証ができるので、レスポンスを待つ必要がなく、アクセシビリティが良い。
    Script を無効にされている場合は検証が行われないため、エラー検証が実行されることは保証されない。

  • サーバ側のチェック
    レスポンスを待つ必要があるので、アクセシビリティは悪い。
    サーバ側でのチェックなので、エラー検証が実行されることが保証される。
# 検証コントロール (Validator) はどうなっているかというと...
# (*゚Д゚)y-; ウマー

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 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 勉強会 / ヒーロー島
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-08-16 12:30
検証云々の話は皆さんの仰る通りなので、言う事はないですが、
引用:

初めまして。仕事でWebアプリケーションの開発をしています。
はっきり言って何も知らない状態でこの仕事をはじめました。


引用:

「.aspx.vb」側に記述するとサーバー側の処理で、「.aspx」側はクライアントの処理になるのですか?


未記入さんのレベル感はわかりませんが、本を数冊買うなりして、体系的な勉強をした方がよいと思います。(その最中かもしれませんが)
でなければ、他の皆さんの回答の理解もままならないはずです。
基本的な事を疎かにして、「サーバ側クライアント側の検証の違い」も何もないです。
_________________
囚人のジレンマな日々
1

スキルアップ/キャリアアップ(JOB@IT)