- ベストアンサー
サーバー側のデータチェックの必要性
- サーバー側のデータチェックの必要性について
- Javascript側でのデータチェックのみでは不十分
- なぜサーバー側でもデータチェックが必要か
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サーバ側にアクセスしてくるのが正規のページからだけとは限りません。 JavaScriptのプログラムを見ればサーバ側のどこへアクセスしているかはすぐ分りますから、悪意のある攻撃者はそこへいろいろなデータを送りつけてきます。 サーバ側でデータチェックを行わずに処理するとSQLインジェクションやバッファオーバーフロー等を起させるのは容易になってしまいます。
その他の回答 (2)
- Lchan0211b
- ベストアンサー率61% (573/930)
Ajaxを使おうが、Formを使おうが、サーバーとクライアントの 通信は、httpで通信しているだけです。 そのhttp通信データを調査し、同じような通信をする 別のJavaScriptプログラムを作ってサーバーにアクセスすれば、 あなたが自分が作ったJavaScriptでいくら完璧なチェックをしても 無意味です。 もっと簡単で誰にでもできる方法として、 http://www.websec-room.com/2013/08/10/961 で紹介されているFiddlerを使ってみてください。 あなたが作ったJavaScriptプログラムのAjax通信を トラップし、パラメータを一部改ざんしてサーバーに 送信できます。 この記事では、簡単にわかりやすくするために Formを使ってリクエストするものを使って説明していますが、 http通信データを改ざんするものであるため、 FormとかAjaxとか関係ありません。 ぜひあなたのプロジェクトでFiddlerを使ってみてください。 JavaScriptでのパラメータチェックがセキュリティ的に いかに意味のないものであるか実感できると思います。 JavaScriptでのパラメータチェックは、ユーザビリティの 向上が主な目的です。
お礼
確かにAjaxでもFormでもhttp通信には違いはありませんね。 Fiddlerのことを教えて頂いたので、一度Fiddlerを使って実験をしてみたいと思います。 有益な情報をありがとうございました。
- hwoa1024
- ベストアンサー率36% (122/336)
そのアプリケーションがどの程度の規模で使用されるかによります。 イントラ内でしか使わない、とか 漏洩しても問題ない程度のデータをSELECTしているだけ、とか。 上記であれば気にしなくていいと思います。 完璧に制限する労力に見合わないですから。 一般公開していてログインや情報の編集等があるのであれば サーバー側でも完璧に制限するべきだと思います。
お礼
おっしゃる通り、人的・時間的なコストとのトレードオフですね。 幸い業務処理用ですので漏洩して困るようなデータではないのですが、パブリックのサーバー環境を使用しているため、少しは気遣った方がよいですね。 貴重なご意見ありがとうございました。
お礼
やる人は正規ページ以外から入ってアクセスしてくるんですね。 いろいろな手引書に書いてあったのが納得できました。 一遍には難しいですが、少しずつJava側のチェックも入れていくことにします。 ありがとうございました。