- PR -

Java側での文字数制限とJavascript側での文字数制限の違いについて

1
投稿者投稿内容
Sum+Go
常連さん
会議室デビュー日: 2006/03/11
投稿数: 40
投稿日時: 2007-01-24 18:19
お尋ねします。
テキストエリアの文字数を仮に「200文字まで」という条件で制御をかけたいと思います。
クライアント側での制御とサーバー側での制御方法がそれぞれあると思いますが、
出来ればサーバーサイドでの制御には手を入れたくありません。
クライアント側でJavascriptを利用して文字数制限をすることでの懸念事項について教えていただけませんか。

私が考えたのは以下の事です。

Javascriptのみを利用する事での懸念事項
 Javascriptを無効にすると文字数制御ができず、無限に文字が入力される恐れがある

以上、よろしくお願いします。


かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-24 18:53
xxx.jsp?text=[200文字以上]
みたいなクエリを送られたら、一発でアウトですよ。
クライアントでのバリデーションはUIの補助的なものと割り切り、
サーバサイドでのバリデーションを行うべきです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-01-24 19:33
クライアントサイドで動作するJavaScriptは正しく動くことが保障されません。
Webシステムは要するにHTTPでのデータのやりとりなわけですが、
クライアントに送ったデータがどのように帰ってくるかはわかりません。
改竄なんていくらでもできてしまいますから、ブラウザ側から帰ってくる値は
信頼してはいけないのはWebシステムを構築する上での常識です。

JavaScriptを用いたクライアントサイドでのチェックは
レスポンスを向上させ利便性を高めるためと割り切るのもまた常識です。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-24 23:13
例えば悪意があれば、いろんなことが出来てしまいます。
コード:
function checkTextArea(){
    ...//文字数チェック
}


上記のような関数で制御している場合、
HTMLのソースの表示を行えばcheckTextAreaと言う関数で制御されているのが、
ユーザサイドから丸見えになります。

そこで、アドレスバーに
コード:
javascript:(function(){checkTextArea = function(){};})()


と入力するだけで関数が無効化されます。

後は、サーバサイドに文字数を超えて送信することが出来ます。
例えばDBにインサートする処理で落ちる可能性も出てきます。

「200文字以上だめなら、最初から入力できるようにするなよ!」と
ユーザに言わせないためにスクリプトを使うということを意識しましょう。
1

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