サーバ側の入力値妥当性チェックをJavaScriptで!

あけましておめでとうございます。
このエントリは Java Advent Calendar 2011 の 1/3 のエントリーです。


今回、ご紹介するライブラリは
InputValidator 3.00 beta
です。
(本ブログ掲載までに準備が間に合わず、beta版を公開します。数ヶ月以内に正式版を公開する予定です。)


このライブラリを使うと、一つの「チェック仕様定義ファイル(JSON形式)」を読み込んで、
クライアント側(JavaScript)とサーバ側(Java)で入力値の妥当性を検証できます。


何が目新しいかと言いますと、
「クライアント側のユーザビリティ向上と同時に、サーバ側のセキュリティ(妥当性検証)も確保される」
ということなんです。


百聞は一見にしかず、ということで、サンプルをご覧ください。


InputValidator 3.00 beta
http://inputvalidator.appspot.com/


InputValidator は容易に拡張でき、必要に応じて案件ごとにチェック仕様をカスタマイズできます。
チェック仕様を JavaScript で記述できるので、要望に応じて柔軟な対応が可能です。


ところで、話はかわりますが、Web アプリにとって必要なセキュリティ対策とは何でしょう?
XSS 対策、SQL インジェクション対策、ディレクトリトラバーサルコマンドラインインジェクション、CRSF 等々。
皆様ご経験されているとおり、やるべきことが沢山あります。
予算やスケジュールの都合と言い訳をして、手を抜けばいくらでも手を抜けますが、後で必ず痛い目をみます。
だからこそ、セキュリティ対策をしながら、いかに楽しくコーディングをするかが重要です。
(アプリケーション設計の腕の見せ所でしょうか!)


こういった理由から、「クライアント側の入力値妥当性チェック」はますます優先度が下がることになり、
フレームワークに導入される機会が減っていると思います。


また、HTML5 になって「クライアント側の入力値妥当性チェック」が導入されたのはご存知かと思います。
最初は「これでクライアント側の入力値妥当性チェックの導入が促進するのでは?」と思いましたが、疑問点が残ります。
結局、クライアント側とサーバ側と2重でチェックロジックを実装することになり、プログラマの仕事は増えているのです。
そうなると、結局のところ、手間のかかる「クライアント側の入力値妥当性チェック」はやめよう、となりがちです。


ちょっとまってください!!


「クライアント側の入力値妥当性チェック」は利用者のウケが良いです!(顧客満足度向上やモチベーションアップにも繋がります。)
業務で JavaScript をいじった経験のある方ならば、画面にちょこっと細工するだけで、顧客満足度向上に繋がる経験をしていると思います。
10年前とは状況は異なり、ユーザの目は肥えてきています。難しい要望(ユーザビリティ向上)をガンガン言ってきます。


近年の JavaScript は、ユーザービリティ向上やモバイル対応において、もはや無視できない存在です。
さらに、Rhino の登場により、サーバ側で JavaScript が動作するようになりました。
そして、InputValidator が誕生しました。


本ライブラリ以外にも、有用な JavaScript の Validation ライブラリがあります。
それらについても同様にサーバ側で動くような仕組みができると、もっと活用できるようになるのになぁ、と期待しております。


本ライブラリについて、フォロー/「いいね!」いただけると幸いです。