(57)【特許請求の範囲】
【請求項１】
フォーム検証のためのシステムであって、
１または複数のプロセッサであって、
クライアントデバイスからの、フォームを求める要求に応答して、第１のパラメータ及び第２のパラメータを生成し、
前記第１のパラメータ及び前記第２のパラメータを含む第１のトリガメッセージを前記クライアントデバイスに送信し、前記第１のトリガメッセージは、少なくとも一部には前記第１のパラメータに基づいて、前記クライアントデバイスにおいて非表示フォームフィールドを生成させて前記フォームに追加させるように、及び少なくとも一部には前記第２のパラメータに基づいて、前記非表示フォームフィールドに対応する値を生成させるように構成され、
前記フォームのサブミットに関連付けられているデータを受信し、
前記フォームのサブミットに関連付けられている前記データが、前記第１のパラメータに一致する前記非表示フォームフィールドと、前記第２のパラメータに対応する前記非表示フォームフィールドに対応するサブミット値とを含むかどうかを決定し、前記非表示フォームフィールドが前記第１のパラメータに一致し、前記非表示フォームフィールドに対応する前記サブミット値が前記第２のパラメータに対応する場合に、前記フォームのサブミットに関連付けられている前記データを、有効性を認められるものであると決定するように構成されている、１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するように構成されている１または複数のメモリと、
を備える、システム。
【請求項２】
請求項１に記載のシステムであって、
前記第１のパラメータ及び前記第２のパラメータの少なくとも１つは、ランダムに生成される、システム。
【請求項３】
請求項１に記載のシステムであって、
前記１または複数のプロセッサは、更に、
第３のパラメータを生成し、
前記第３のパラメータを含む第２のトリガメッセージを前記クライアントデバイスに送信するように構成され、前記第２のトリガメッセージは、前記クライアントデバイスにおいて、非表示フォームフィールド生成機能に関連付けられている機能名称として前記第３のパラメータを使用させるように構成されている、システム。
【請求項４】
請求項１に記載のシステムであって、
検証文字列は、前記第２のパラメータに基づいて決定されるように構成されている、システム。
【請求項５】
請求項４に記載のシステムであって、
前記１または複数のプロセッサは、更に、定義された変数を生成するように構成され、前記定義された変数は、前記第１のトリガメッセージに含められ、前記定義された変数は、前記非表示フォームフィールドに対応する当座の値として割り当てられるように構成されている、システム。
【請求項６】
請求項５に記載のシステムであって、
前記１または複数のプロセッサは、更に、前記クライアントデバイスによる値割り当て事象の検出に応答して、前記非表示フォームフィールドに対応する前記当座の値を前記検証文字列に取って代わらせるように構成されている、システム。
【請求項７】
請求項６に記載のシステムであって、
前記値割り当て事象は、前記クライアントデバイスに関係する人間に関わる操作に関連付けられている、システム。
【請求項８】
請求項６に記載のシステムであって、
前記値割り当て事象は、マウス移動、キーボード操作、及びタッチ画面操作のうちの１つ以上を含む、システム。
【請求項９】
請求項１に記載のシステムであって、
前記１または複数のプロセッサは、更に、追加非表示フィールドトリガメッセージを送信するように構成され、前記追加非表示フィールドトリガメッセージは、複数の追加非表示フィールドを生成させて前記フォームに追加させるように構成されている、システム。
【請求項１０】
請求項１に記載のシステムであって、
前記フォームのサブミットに関連付けられている前記データが、前記第１のパラメータに一致する前記非表示フォームフィールドを含むか否かを決定することは、前記非表示フォームフィールドの名称が前記第１のパラメータに一致するか否かを決定することを含む、システム。
【請求項１１】
サーバコンピュータによって実行される、フォーム検証のための方法であって、
クライアントデバイスからの、フォームを求める要求に応答して、第１のパラメータ及び第２のパラメータを生成すること、
前記第１のパラメータ及び前記第２のパラメータを含む第１のトリガメッセージを前記クライアントデバイスに送信すること、前記第１のトリガメッセージは、少なくとも一部には前記第１のパラメータに基づいて、前記クライアントデバイスにおいて非表示フォームフィールドを生成させて前記フォームに追加させるように、及び少なくとも一部には前記第２のパラメータに基づいて、前記非表示フォームフィールドに対応する値を生成させるように構成され、
前記フォームのサブミットに関連付けられているデータを受信すること、
前記フォームのサブミットに関連付けられている前記データが、前記第１のパラメータに一致する前記非表示フォームフィールドと、前記第２のパラメータに対応する前記非表示フォームフィールドに対応するサブミット値とを含むかどうかを決定し、前記非表示フォームフィールドが前記第１のパラメータに一致し、前記非表示フォームフィールドに対応する前記サブミット値が前記第２のパラメータに対応する場合に、前記フォームのサブミットに関連付けられている前記データを、有効性を認められるものであると決定すること、
を備える方法。
【請求項１２】
請求項１１に記載の方法であって、
前記第１のパラメータ及び前記第２のパラメータの少なくとも１つは、ランダムに生成される、方法。
【請求項１３】
請求項１１に記載の方法であって、更に、
第３のパラメータを生成すること、
前記第３のパラメータを含む第２のトリガメッセージを前記クライアントデバイスに送信することを備え、前記第２のトリガメッセージは、前記クライアントデバイスにおいて、非表示フォームフィールド生成機能に関連付けられている機能名称として前記第３のパラメータを使用させるように構成されている、方法。
【請求項１４】
請求項１１に記載の方法であって、
検証文字列は、前記第２のパラメータに基づいて決定されるように構成されている、方法。
【請求項１５】
請求項１４に記載の方法であって、更に、
定義された変数を生成することを備え、前記定義された変数は、前記第１のトリガメッセージに含められ、前記定義された変数は、前記非表示フォームフィールドに対応する当座の値として割り当てられるように構成されている、方法。
【請求項１６】
請求項１５に記載の方法であって、更に、
前記クライアントデバイスによる値割り当て事象の検出に応答して、前記非表示フォームフィールドに対応する前記当座の値を前記検証文字列に取って代わらせることを備える方法。
【請求項１７】
請求項１６に記載の方法であって、
前記値割り当て事象は、前記クライアントデバイスに関係する人間に関わる操作に関連付けられている、方法。
【請求項１８】
請求項１１に記載の方法であって、更に、
追加非表示フィールドトリガメッセージを送信することを備え、前記追加非表示フィールドトリガメッセージは、複数の追加非表示フィールドを生成させて前記フォームに追加させるように構成されている、方法。
【請求項１９】
フォーム検証のためのデバイスであって、
１または複数のプロセッサであって、
フォームを求める要求を生成してサーバに送信し、
第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージを前記サーバから受信し、
少なくとも一部には前記第１のトリガメッセージに基づいて、非表示フォームフィールドを生成し、前記非表示フォームフィールドに関連付けられている名称は、前記第１のパラメータに基づいて決定され、前記非表示フォームフィールドに対応する値は、少なくとも一部には前記第２のパラメータに基づいて決定され、
値割り当て事象の検出に応答して、前記非表示フォームフィールドに対応する当座の値を検証文字列に取って代わらせ、前記検証文字列は、前記第２のパラメータに基づいて決定され、
フォームサブミット動作の受信に応答して、前記フォームのサブミットに関連付けられているデータを前記サーバに送信するように構成されている１または複数のプロセッサと、
前記１または複数のプロセッサに接続され、前記１または複数のプロセッサに命令を提供するように構成されている１または複数のメモリと、
を備える、デバイス。
【請求項２０】
請求項１９に記載のデバイスであって、
前記１または複数のプロセッサは、更に、定義された変数を受信するように構成され、前記非表示フォームフィールドに対応する前記当座の値は、前記定義された変数を含む、デバイス。
【請求項２１】
請求項１９に記載のデバイスであって、
前記値割り当て事象は、前記デバイスに関係する人間に関わる操作に関連付けられている、デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、あらゆる目的のために、参照によって本明細書に組み込まれる、２０１２年３月８日に出願された発明の名称を「Ａ  ＦＯＲＭ  ＶＡＬＩＤＡＴＩＯＮ  ＭＥＴＨＯＤ，ＤＥＶＩＣＥ，ＡＮＤ  ＳＹＳＴＥＭ（フォーム検証の方法、デバイス、及びシステム）」とする中国特許出願第２０１２１００５９７４１．８号に基づく優先権を主張する。
【０００２】
本出願は、インターネット技術の分野に関わり、特に、フォーム検証のための技術に関する。
【背景技術】
【０００３】
フォームは、例えばクライアントデバイスとサーバとの間でデータをやり取りするための重要な手段である。フォームは、ローカル及び／又はリモートにおけるデータ収集を目的として、クライアントデバイスによって使用されることもある。
【０００４】
フォームは、通常は、フォームフィールド、フォームボタン、及びその他の構成要素を含む。例えば、フォームに含まれえるその他の構成要素として、テキストフィールドやパスワードフィールドなどの入力フィールドが挙げられる。フォーム生成の際は、伝送セキュリティを向上させるために、既定の名称を有する非表示フォームフィールドも生成されて特定のフォームに含められる。非表示フォームフィールドは、フォームを提示されたウェブページを訪問しているユーザには見えない不可視のフォーム要素である。したがって、ユーザは、非表示フィールドには何も内容を入力することができず、これが、非表示フィールドがときとして、非ユーザ入力情報をサブミット（提供）するために使用されるゆえんである。
【発明の概要】
【０００５】
従来、クライアントデバイスは、（例えば、ユーザによって訪問されているウェブページに関連付けられている）ユーザリクエストフォームを読み出し、そのフォームは、クライアントデバイスにインストールされたウェブブラウザによって提示され、ユーザは、そのフォームの入力フィールドにデータを入力することができる。ユーザは、フォームへの入力を完成した後、フォームサブミットボタンを選択し、すると、クライアントデバイスは、フォームに入力されたデータを、関係するウェブサーバにサブミットし、そこで、ウェブサーバは、サブミットされたフォームデータを更に処理することができる。しかしながら、従来の技術は、通常は、フォームデータが生身の人ユーザ（人間）によって完成されたものであるかどうかを決定することができない。フォームデータが人間ユーザによって完成及びサブミットされたことを保証することが望ましいとされる理由は、１つには、フォームがロボット又専用のコンピュータプログラムによって自動的に完成及び／又はサブミットされたものであるときは、スパム又は悪意あるフォーラムフラッドなどのマイナスの結果が生じえるからである。
【０００６】
サブミットされたフォームが人間ユーザによって完成されたものであることを検証する従来の技術は、１つには、フォームに含められた１つ以上の非表示フィールドを検証することによって実現される。例えば、非表示フォームフィールドは、名称と、値とを含む。クライアントデバイスによって（ユーザリクエストの結果として）フォームがリクエストされるたびに、サーバは、ランダムな文字を生成し、それをクライアントデバイスに送り、これは、クライアントデバイスに、そのランダム文字を非表示フォームフィールドの数値として使用させる。このように、サーバが、クライアントデバイスによってサブミットされたユーザ完成フォームを受信したときに、フォーム検証は、非表示フォームフィールドの値がサーバによって生成されたランダム文字に一致するかどうかを確認することによって実現される。
【０００７】
しかしながら、クライアントデバイスは、フォームを生成するのと同時に非表示フォームフィールドを生成するので、非表示フォームフィールドの名称は、事前に設定されており、したがって、フォームを求めるリクエストが出されるたびに生成される非表示フォームフィールドの名称は、常に同じである。したがって、クライアントデバイスによってフォームを求めるリクエストが複数回にわたって出されると、悪意ある自動完成プログラムは、分析を通じて非表示フォームフィールドの名称を決定することができ、したがって、これらのプログラムは、最終的に、フォームを認識してそれによってフォームの自動完成を実施することが可能になる。
【図面の簡単な説明】
【０００８】
以下の詳細な説明及び添付の図面において、本発明の様々な実施形態が開示される。
【０００９】
【図１】フォーム検証のためのシステムの一実施形態を示す図である。
【００１０】
【図２】フォーム検証のためのプロセスの一実施形態を示すフローチャートである。
【００１１】
【図３】フォーム検証のためのプロセスの一実施形態を示すフローチャートである。
【００１２】
【図４】フォーム検証のためのプロセスの一実施形態を示すフローチャートである。
【００１３】
【図５】フォーム検証のためのプロセスの一実施形態を示すフローチャートである。れる。
【００１４】
【図６】フォーム検証のシステムの一実施形態を示す図である。れる。
【００１５】
【図７】フォーム検証のシステムの一実施形態を示す図である。
【発明を実施するための形態】
【００１６】
本発明は、プロセス、装置、システム、合成物、コンピュータ読み取り可能なストレージ媒体に実装されたコンピュータプログラム製品、並びに／又は結合先のメモリに記憶された命令及び／若しくは結合先のメモリによって提供される命令を実行するように構成されるプロセッサなどのプロセッサのような、数々の形態で実現することができる。本明細書では、これらの実現形態、又は本発明がとりうるその他のあらゆる形態が、技術と称されるだろう。総じて、開示されたプロセスのステップの順序は、本発明の範囲内で変更されてよい。別途明記されない限り、タスクを実施するように構成されたものとして説明されるプロセッサ又はメモリなどのコンポーネントは、所定時にタスクを実施するように一時的に構成された汎用コンポーネントとして、又はタスクを実施するように製造された特殊コンポーネントとして実現されてよい。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成される１つ以上のデバイス、回路、並びに／又は処理コアを言う。
【００１７】
本発明の原理を例示する添付の図面とともに、以下で、本発明の１つ以上の実施形態の詳細な説明が提供される。本発明は、このような実施形態との関わりのもとで説明されるが、いずれの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、数々の代替形態、変更形態、及び均等物を包含している。以下の説明では、本発明の完全な理解を与えるために、数々の具体的詳細が明記されている。これらの詳細は、例示を目的として提供されたものであり、本発明は、これらの詳細の一部又は全部を伴わずとも、特許請求の範囲にしたがって実施されえる。明瞭さを期するために、本発明に関係する技術分野で知られる技術要素は、本発明が不必要に不明瞭にされないように、詳細な説明を省略されている。
【００１８】
本出願は、数々の、汎用又は専用の、コンピュータシステム環境又は構成において使用することができる。例えば、パソコン、サーバコンピュータ、手持ち式のすなわち携帯式の機器、タブレット端末、マルチプロセッサデバイス、及び上記のデバイス若しくは機器のうちの任意を含む分散コンピューティング環境などを、使用することができる。
【００１９】
本出願は、例えばプログラムモジュールなどの、コンピュータによって実行されるコンピュータ実行可能コマンドを一般的背景として説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本出願は、また、分散型コンピューティング環境でも実現することもできる。このような分散型コンピューティング環境では、通信ネットワークを通じて接続されたリモート処理機器によってタスクが実行される。分散型コンピューティング環境では、プログラムモジュールは、ストレージ機器を含むローカル又はリモートのコンピュータにおけるストレージ媒体上に配することができる。
【００２０】
フォーム検証の実施形態が、本明細書で説明される。様々な実施形態では、フォームを求めるユーザリクエストがサーバにおいて受信されたことに応答して、サーバによって第１のパラメータ及び第２のパラメータが生成される。例えば、ユーザリクエストは、フォームに関連付けられているウェブページにアクセスするためにウェブブラウザを使用しているユーザに関係付けられる。一部の実施形態では、第１のパラメータ及び第２のパラメータのそれぞれの値が、ランダムに生成される。少なくとも、フォームに関連付けられているデータと、第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージとが、クライアントデバイスに伝送される。クライアントデバイスは、ユーザに提示されるフォームを生成するように構成される。第１のトリガメッセージは、第１のパラメータに基づいて、クライアントデバイスにおいて非表示フォームフィールドを生成させるように、及び第２のパラメータに基づいて、非表示フォームフィールドに対応する値を生成させるように構成される。第２のパラメータに基づいて決定される値は、クライアントデバイスに関連する値割り当て事象が検出された場合に、非表示フォームフィールドに対応する値として割り当てられる。値割り当て事象は、マウス移動の受信などの、クライアントデバイスに関係する人間との相互作用に関わる任意の事象／操作であるように構成される。非表示フォームフィールドと、該非表示フォームフィールドに対応する値とを含む完成されたフォームが、サーバにサブミットされる。サーバが、非表示フォームフィールドが第１のパラメータに対応すること、及び非表示フォームフィールドのサブミット値が第２のパラメータに対応することを確認した場合は、サブミットされたフォームデータは、有効性を認められ、サーバは、受信されたデータを引き続き処理してよい。サブミットされたフォームデータは、人間に関わる値割り当て事象の検出に応答して、正しい値、すなわち第２のパラメータに基づいた値が非表示フォームフィールドに対応する値として割り当てられたという理由で、人間ユーザによってサブミットされたものであると想定され、したがって、有効性を認められ、自動完成コンピュータプログラムがフォームデータを完成させようとした場合は、そのようなプログラムは、非表示フォームフィールドを学習していないだろう、及び／又は非表示フォームフィールドに対応する値は、フォームの完成に成功していないだろうと想定される。しかしながら、サーバが、非表示フォームフィールドが第１のパラメータに対応しないこと又は非表示フォームフィールドのサブミット値が第２のパラメータに対応しないことの、いずれか又は両方を決定したならば、サブミットされたデータは、人間ユーザによって完成されたものではないと想定され、したがって、データは、有効性を認められず、サーバは、受信されたデータを処理しなくてよい。
【００２１】
図１は、フォーム検証のためのシステムの一実施形態を示す図である。この例では、システム１００は、デバイス１０２と、ネットワーク１０４と、検証サーバ１０６と、データベース１０８とを含む。ネットワーク１０４は、高速ネットワーク及び／又は電気通信ネットワークを含んでいてよい。
【００２２】
ユーザは、検証サーバ１０６に関連付けられているウェブサーバに対してフォームをリクエストするために、デバイス１０２を使用してよい。例えば、フォームは、ウェブサイトへのログイン又はオンラインフォーラムにおけるコメント投稿に関係付けられていてよい。デバイス１０２は、ラップトップとして示されているが、デバイス１０２のその他の例として、デスクトップコンピュータ、タブレット端末、モバイル機器、スマートフォン、及びその他の任意のタイプの計算機器が挙げられる。例えば、ユーザは、フォームに関連付けられている特定のウェブページにアクセスするために、ウェブブラウザ、又はデバイス１０２上で実行されるその他のアプリケーションを使用してフォームをリクエストしてよい。
【００２３】
フォームを求めるリクエストに応答して、検証サーバ１０６は、少なくとも、第１のパラメータ及び第２のパラメータを生成するように構成される。一部の実施形態では、検証サーバ１０６は、受信された各リクエスト用に、新しい第１のパラメータ及び新しい第２のパラメータを生成するように構成される。一部の実施形態では、検証サーバ１０６は、各受信されたリクエストと、該リクエスト用に生成された対応する第１のパラメータ及び第２のパラメータとの間の関係を、データベース１０８に記憶するように構成される。検証サーバ１０６は、第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージをデバイス１０２に送信するように構成される。第１のトリガメッセージは、実行されたときに、少なくとも一部には第１のパラメータに基づいて、デバイス１０２において非表示フォームフィールドを生成させてフォームに追加させるように、及び少なくとも一部には第２のパラメータに基づいて、非表示フォームフィールドに対応する値を決定させるように構成される、コンピュータコードを含む。第１のトリガメッセージの受信に応答して、デバイス１０２は、第１のパラメータに基づいて、非表示フォームフィールドを生成するように、及び値割り当て事象の検出に応答して、第２のパラメータに基づいて非表示フォームフィールドに値を割り当てるように構成される。検証サーバ１０６は、フォームのサブミットに関連付けられているデータをデバイス１０２から受信するように構成される。検証サーバ１０６は、以下で詳しく説明されるように、受信されたデータが、（データベース１０８を使用して決定された、）リクエストされたフォームに関連付けられている第１のパラメータ及び第２のパラメータに対応するかどうかに基づいて、サブミットされたデータが、有効性を認められるものであるかどうかを決定するように構成される。
【００２４】
図２は、フォーム検証のためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス２００は、システム１００において実行に移される。
【００２５】
ステップ２０２では、クライアントデバイスに対してフォームを求めるリクエストの受信に応答して、第１のパラメータ及び第２のパラメータが生成される。例えば、ウェブサイトにアクセスするために、クライアントデバイスにインストールされたウェブブラウザを使用しているユーザは、フォームに関連付けられているウェブページに遭遇するだろう。ユーザは、上記ウェブページを訪問することを選択してよく、該選択を受けて、ウェブブラウザは、上記ウェブページに関連付けられている、フォームを含むデータを求めるリクエストを送信する。リクエストは、上記ウェブページに関連付けられているウェブサーバにおいて受信される。例えば、フォームは、登録フォーム、サインインフォーム、又はオンラインフォーラムに関連付けられているコメント投稿フォームであってよい。
【００２６】
一部の実施形態では、第１のパラメータ及び第２のパラメータは、ランダムに生成された２つの文字列のそれぞれを割り当てられていてよい。例えば、各文字列は、１つ以上の英数字文字を含んでいてよい。一部の実施形態では、情報のセキュリティを向上させるために及び盗用を防ぐために、これらのランダムに生成された文字列は、先ず、第１のパラメータ及び第２のパラメータにそれぞれ割り当てられる前に暗号化される。例えば、第１のパラメータ及び第２のパラメータにそれぞれ割り当てられる文字列は、任意の暗号化キー技術を使用して生成されたランダム暗号化キーによって暗号化される。一具体例では、クライアントデバイスからの、フォームを求めるリクエストの受信に応答して、サーバは、第１のパラメータ及び第２のパラメータにそれぞれ割り当てられる文字列、すなわち文字列１及び文字列２をランダムに生成する。これらの文字列は、暗号化文字列Ｅ（文字列１）及びＥ（文字列２）を個別に生成するために、ウェブサイト暗号化キー及び／又はタイムスタンプ情報を使用して暗号化されている。ウェブサイト暗号化キーは、ユーザが現時点で閲覧しているウェブサイトの一意の識別番号であってよい。タイムスタンプは、例えば、クライアントデバイスのオペレーティングシステムの現時刻であってよい。使用される暗号化技術の一例は、ＭＤ５（メッセージダイジェストアルゴリズム、ヴァージョン５）である。一部の実施形態では、暗号化の複雑性を高めるために、暗号化技術として、サーバによって実行されるＰＨＰ（ハイパーテキストプリプロセッサ）などのスクリプト言語を使用した自動定義暗号化技術が使用されてよい。サーバは、フォームを通じてサブミットされたデータを、記憶された第１のパラメータ及び第２のパラメータと後ほど比較することができるように、第１のパラメータ及び第２のパラメータを記憶するように構成される。
【００２７】
ステップ２０４では、第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージがクライアントデバイスに送信され、第１のトリガメッセージは、少なくとも一部には第１のパラメータに基づいて、クライアントデバイスにおいて非表示フォームフィールドを生成させてフォームに追加させるように、及び少なくとも一部には第２のパラメータに基づいて、非表示フォームフィールドに対応する値を決定させるように構成される。サーバは、リクエストされたフォームに関連付けられているデータと、第１のトリガメッセージとを、クライアントデバイスに送信するように構成される。第１のトリガメッセージは、少なくとも、第１のパラメータ及び第２のパラメータを含む。サーバからのデータの受信に応答して、クライアントデバイス（又はクライアントデバイスにインストールされたウェブブラウザアプリケーション）は、受信されたデータに基づいてフォームを生成するように構成される。一部の実施形態では、第１のトリガメッセージは、実行されたときに、クライアントデバイス（又はクライアントデバイスにインストールされたウェブブラウザアプリケーション）に、非表示フォームフィールドを生成させてフォームに追加させる、命令及び／又はコンピュータコードを含む。非表示フォームフィールドは、フォームを提示されているユーザには見えない。非表示フォームフィールド及びそれに対応する値は、フォームがサーバにサブミットされるときに、フォームに入力されたその他のデータとともに、サーバにサブミットされる。非表示フォームフィールドは、名称と、値とを含む。一部の実施形態では、非表示フォームフィールドの値は、数値である。第１のトリガメッセージは、クライアントデバイス（又はクライアントデバイスにインストールされたウェブブラウザアプリケーション）に、第１のパラメータに基づいて非表示フォームフィールドの名称を生成させ、検出された値割り当て事象に応答して、第２のパラメータに基づいて決定された値を非表示フォームフィールドに割り当てさせる。一部の実施形態では、クライアントデバイスによる非表示フォームフィールドの生成は、非表示フォームフィールド生成機能の呼び出しに基づく。クライアントデバイスのフォームデータが、非表示フォームフィールドの内容を分析する目的でマルウェア（悪意あるソフトウェア）によって傍受されることがないように、サーバは、クライアントデバイスに、非表示フォームフィールド生成機能及びその他の実行可能コードに対して難読化処理すなわちコードの難読化を実施させるための、第１のトリガメッセージ命令を含んでいてよく、したがって、たとえもし、難読化されたコードが傍受されたとしても、傍受した側は、それを認識することができない。
【００２８】
一部の実施形態では、第１のパラメータに基づいて非表示フォームフィールドが生成された後、該非表示フォームフィールドは、当座の値を割り当てられる。次いで、値割り当て事象が検出されたときに、第２のパラメータに基づいて生成された検証文字列が、（事前に割り当てられた当座の値に取って代わるために、）非表示フォームフィールドの値として割り当てられる。検証文字列は、サーバによって生成されてクライアントデバイスに送信されてよい、又は検証文字列は、クライアントデバイスにおいて生成されてよい。値割り当て事象は、実在の人ユーザ（人間ユーザ）が、クライアントデバイスに関係する操作を実行するときにトリガされる事象（例えば、人間ユーザによって実施されてクライアントデバイスのインターフェースにおいて受信される人間とマシンとの相互作用）を言う。例えば、値割り当て事象は、マウス移動事象である。例えば、フォームを完成させるプロセスにおいて、人間ユーザは、クライアントデバイスのディスプレイインターフェース上でマウスのカーソルが動くようにマウスを操作する必要がある。したがって、このようなマウス移動事象をクライアントデバイスが検出したときは、この事象は、フォームを完成させているユーザが人間ユーザであることを表しており、したがって、第２のパラメータに基づいて決定された値が、非表示フォームフィールドに割り当てられる。一部の実施形態では、値割り当て事象と見なされる事象が、システムオペレータによって設定されてよい。したがって、たとえもし、第１のパラメータ及び第２のパラメータが、悪意ある自動フォーム完成プログラムによって取得されたとしても、このようなプログラムは、非表示フォームフィールドへの正しい値の割り当てを実現することができないだろう。値割り当て事象のその他の例としては、キーボード操作事象、（デバイスが入力デバイスとしてタッチ画面をサポートしているならば）タッチ画面操作、又は人間によって実行されるフォーム操作を自動完成プログラムによって実行されるフォーム操作と区別することができる任意のその他の事象が挙げられる。
【００２９】
一部の実施形態では、値割り当て事象の検出に応答して、非表示フォームフィールドの値に対応する当座の値に取って代わるために割り当てられる検証文字列が、第２のパラメータと同じものとして決定される。検証文字列が、第２のパラメータと同じであるならば、値割り当て事象の検出に応答して、第２のパラメータが、非表示フォームフィールドの値として割り当てられる。
【００３０】
一部の実施形態では、値割り当て事象の検出に応答して、非表示フォームフィールドの値に対応する当座の値に取って代わるために割り当てられる検証文字列が、暗号化技術及び第２のパラメータに基づいて決定される。例えば、第２のパラメータに基づいて検証文字列を生成するために使用される暗号化技術は、ＭＤ５であってよい。一部の実施形態では、サーバは、検証文字列の暗号化値を決定し、該検証文字列をクライアントデバイスに送信する。一部の実施形態では、第２のパラメータに基づいて検証文字列を決定するために使用される暗号化技術は、クライアントデバイスにおいて事前に選択されてよい、又はスクリプトによって動的に決定されてよい。例えば、実行されるスクリプト（例えばＪａｖａＳｃｒｉｐｔ（登録商標））は、選択された暗号化技術を、検証文字列を得るために第２のパラメータに対して実施させてよい。一部の実施形態では、検証文字列を生成するために、第２のパラメータ及び暗号化技術に追加して、ウェブサイト暗号化キー及びタイムスタンプなどのその他の情報も使用されてよい。
【００３１】
一部の実施形態では、サーバは、検証文字列を生成した後、その検証文字列を記憶する。サーバは、セッションに関係付けて検証文字列を記憶してよく、その検証文字列を有効期間に関係付けてよい。非表示フォームフィールドを追加されるべきフォームが、そのフォームがリクエストされてから有効期間が経過した後にサブミットされたならば、サーバは、フォームに関連付けられているサブミットされたデータを、有効性を認められないものであると自動的に決定する。
【００３２】
ステップ２０６では、フォームのサブミットに関連付けられているデータが受信される。フォームのその他のフィールドに対応する値が入力された後、フォームは、例えば、フォームに入力されたデータをサーバにサブミットするように構成された選択可能要素（「ボタン」）の選択によってサブミットされてよい。或いは、例えば、フォームは、自動フォームサブミットプロセスを通じてサブミットすることもできる。非表示フォームフィールドに関連付けられているデータもまた、フォームに入力されたその他の値とともにサブミットされる。
【００３３】
ステップ２０８では、フォームのサブミットに関連付けられているデータが、第１のパラメータに一致する非表示フォームフィールドと、第２のパラメータに対応する非表示フォームフィールドに対応するサブミット値とを含むかどうかが決定される。非表示フォームフィールドが第１のパラメータに一致し、非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応する場合は、フォームのサブミットに関連付けられているデータは、有効性を認められるものであると決定される。
【００３４】
サーバは、非表示フォームフィールドを追加されたフォームを通じてサブミットされたデータを受信した後、先ず、非表示フォームフィールドが、サーバによって生成された第１のパラメータに一致するかどうかを決定する。次いで、サーバは、この非表示フォームフィールドに対応するサブミット値が、サーバによって生成された第２のランダムパラメータに対応するかどうかを確認する。非表示フォームフィールドの値として割り当てられた検証文字列が、第２のパラメータと同じである場合は、サーバは、非表示フォームフィールドに対応するサブミット値が、第２のパラメータと同じであるときに、非表示フォームフィールドに対応するその値を、第２のパラメータに対応していると決定する。非表示フォームフィールドの値として割り当てられた検証文字列が、暗号化技術及び第２のパラメータを使用して決定された場合は、サーバは、非表示フォームフィールドに対応するサブミット値が、復号化によって第２のパラメータに一致させることができるときに、すなわち第２のパラメータが、暗号化によって非表示フォームフィールドに対応するサブミット値に一致させることができるときに、非表示フォームフィールドに対応するサブミット値を、第２のパラメータに対応していると決定する。サーバは、フォーム読み出し・サブミットプロセスごとに新しい第１のパラメータ及び新しい第２のパラメータを生成するので、その都度、各読み出されるフォームに追加される非表示フォームフィールドの名称は更新され、該非表示フォームフィールドに対応する値も更新される。フォームを求める新しいリクエストごとに第１のパラメータ及び第２のパラメータを更新することは、自動完成プログラムがその都度非表示フォームフィールドの更新後の名称及びその更新後の値を学習することを困難にする。更に、第２のパラメータに基づいて決定される非表示フォームフィールドの正しい値は、クライアントデバイスに関係する人間に関わる操作に関連付けられている値割り当て動作の検出に応答して非表示フォームフィールドに割り当てられるようにトリガされるので、サーバが、第１のパラメータに一致する非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応していないと決定したならば、フォームは、実在の人ユーザ（人間ユーザ）によって完成されたものではないと想定され、したがって、サブミットされたデータは、有効性を認められない。サーバが、サブミットされたデータを、有効性を認められないものであると決定したならば、サーバは、サブミットされたデータを引き続き処理することはない。しかしながら、サーバが、非表示フォームフィールドの名称が第１のパラメータに一致すること、及び非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応することを決定したならば、フォームは、実在の人ユーザによって完成されたものであると想定され、したがって、サブミットされたデータは、有効性を認められる。サーバが、サブミットされたデータを、有効性を認められるものであると決定したならば、サーバは、サブミットされたデータを引き続き処理する。サブミットされたデータを処理する例としては、サーバによって記憶されているデータへのアクセス権をクライアントデバイスに付与すること、識別を実施すること、ログイン情報をクライアントデバイスに返すこと、及びクライアントデバイスに、サブミットされたデータをフォーラムに投稿させることなどが挙げられる。
【００３５】
図３は、フォーム検証のためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス３００は、システム１００において実行に移される。
【００３６】
プロセス３００は、プロセス２００と同様であるが、更なる第３のパラメータを含む。この第３のパラメータは、サーバによって生成され、クライアントデバイスにおいて使用されるための非表示フォームフィールド生成機能を呼び出すために使用される。
【００３７】
ステップ３０２では、クライアントデバイスからの、フォームを求めるリクエストの受信に応答して、第１のパラメータ、第２のパラメータ、及び第３のパラメータが生成される。一部の実施形態では、第１のパラメータ及び第２のパラメータは、プロセス２００で説明されたのと同様な技術に基づいて生成される。一部の実施形態では、第３のパラメータは、第１のパラメータ及び第２のパラメータが生成されたのと同様なやり方で生成されてよい。例えば、値がランダムに生成され、一部の実施形態では、その値が暗号化技術を使用して暗号化されて、第３のパラメータとして割り当てられてよい。
【００３８】
ステップ３０４では、クライアントデバイスに、第３のパラメータを含む第２のトリガメッセージが送信され、該第２のトリガメッセージは、クライアントデバイスにおいて、非表示フォームフィールド生成機能に関連付けられている機能名称として第３のパラメータを使用させるように構成される。クライアントデバイス（又はクライアントデバイスにインストールされたウェブブラウザ）による非表示フォームフィールドの生成は、非表示フォームフィールド生成機能を呼び出すことによって実施される。一部の実施形態では、サーバは、非表示フォームフィールド生成機能の機能名称を定め、クライアントデバイス（又はそれに関連付けられているウェブブラウザ）に、非表示フォームフィールド生成機能の機能名称として第３のパラメータを使用させる。一部の実施形態では、サーバは、クライアントに、非表示フォームフィールド生成機能に対して難読化処理を実施させる。
【００３９】
ステップ３０６では、クライアントデバイスに、第１のパラメータ、第２のパラメータ、及び定義された変数を含む第１のトリガメッセージが送信され、該第１のトリガメッセージは、非表示フォームフィールド生成機能に、クライアントデバイスにおいて第３のパラメータ及び第１のパラメータを使用して非表示フォームフィールドを生成させるように、並びにフォームに非表示フォームフィールドを追加させるように、並びに非表示フォームフィールドに対応する当座の値として、定義された変数を割り当てさせるように、並びに少なくとも一部には第２のパラメータに基づいて、検証文字列を決定させるように構成される。
【００４０】
上述のように、フォームに関連付けられているデータは、第１のトリガメッセージとともにクライアントデバイスに送信される。フォームは、受信されたデータに基づいて、クライアントデバイスにおいて生成される。第１のトリガメッセージは、クライアントデバイスにおいて実行されたときに、第１のパラメータに基づいて、第１の非表示フォームフィールドの名称を割り当てさせる、及び値割り当て事象の検出に応答して、非表示フォームフィールドに対応する値に検証文字列を割り当てさせる、コンピュータコードを含んでいてよい。更に、非表示フォームフィールドは、フォームに追加される。一部の実施形態では、クライアントデバイスは、第３のランダムパラメータを使用して命名された非表示フォームフィールド生成機能を呼び出すように、及び第１のパラメータに基づいて決定された名称を持つ非表示フォームフィールドを生成するようにトリガされる。情報の傍受及び復号化を更に防ぐために、一部の実施形態では、サーバは、非表示フォームフィールドが生成された後に非表示フォームフィールドの当座の値として使用される変数を定義する。
【００４１】
ステップ３０８では、値割り当て事象の検出に応答して、非表示フォームフィールドに対応する当座の値が検証文字列に取って代わられる。最終的に、非表示フォームフィールドの当座の値は、第２のパラメータに基づいて決定される検証文字列に取って代わられる。非表示フォームフィールドの当座の値は、値割り当て事象の検出に応答して、第２のパラメータに基づいて決定される検証文字列に取って代わられる。上述のように、値割り当て事象は、人間ユーザに関係する対クライアントデバイスの操作／相互作用に関係付けられる任意の事象であるように構成される。
【００４２】
ステップ３１０では、随意として、クライアントデバイスに、追加非表示フィールドトリガメッセージが送信され、該追加非表示フィールドトリガメッセージは、複数の追加非表示フィールドを生成させてフォームに追加させるように構成される。一部の実施形態では、サーバは、追加非表示フィールドトリガメッセージをクライアントデバイスに送信する。追加非表示フィールドトリガメッセージは、クライアントデバイスにおいて実行されたときに、（検証に使用される、第１のパラメータ及び第２のパラメータに基づいて生成される非表示フォームフィールドではなく、）フォームを検証するために使用されない複数の追加非表示フィールドを生成させてフォームに追加させる、コンピュータコードを含む。このような追加非表示フィールドを追加する目的は、フォームを自動的に完成させようとするかもしれない悪意ある者を混乱させ、フォームのどの非表示フィールドが検証に使用されるのかわからないようにすることである。生成される追加非表示フィールドの値は、サーバによって検証目的で使用される非表示フォームフィールドと異なり、サーバによってランダムに決定されて追加非表示フィールドトリガメッセージに含められる割り当て文字列である。追加非表示フィールドに割り当てられる値は、クライアントデバイスによってランダムに生成されてもよい。サーバは、各特定のクライアントデバイスに送信されるデータ（例えば、第１のトリガメッセージ、第２のトリガメッセージ、第１のパラメータ、第２のパラメータ、第３のパラメータ、定義された変数、及び／又は追加非表示フィールドに割り当てられる文字列など）を記録しており、したがって、サーバは、クライアントデバイスから受信されたデータを、これらの維持されているデータと後ほど比較することができる。
【００４３】
ステップ３１２では、フォームのサブミットに関連付けられているデータが、第１のパラメータに一致する非表示フォームフィールドと、第２のパラメータに対応する非表示フォームフィールドに対応するサブミット値とを含むかどうかが決定される。非表示フォームフィールドが第１のパラメータに一致し、非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応する場合は、制御は、ステップ３１４に引き渡され、フォームのサブミットに関連付けられているデータは、有効性を認められるものであると決定される。そうでない場合は、制御は、ステップ３１６に引き渡され、フォームのサブミットに関連付けられているデータは、有効性を認められないものであると決定される。
【００４４】
クライアントデバイスによってサブミットされるフォームは、フォーム検証に使用される非表示フォームフィールドと、フォーム検証に使用されない追加非表示フィールドとを含み、しかしながら、サーバは、第１のパラメータを生成しているので、サブミットされたデータのなかで第１のパラメータに対応する名称を持つ非表示フィールド、すなわち非表示フォームフィールドをどのように探すか、及びこの決定された非表示フォームフィールドを検証目的でどのように使用するかを知っている。プロセス２００について説明されたのと同様に、サーバが、第１のパラメータに一致する非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応しないと決定したならば、フォームは、人間ユーザによって完成されたものではないと想定され、したがって、サブミットされたデータは、有効性を認められない。サーバが、サブミットされたデータを、有効性を認められないものであると決定したならば、サーバは、サブミットされたデータを、引き続き処理することはない。しかしながら、サーバが、非表示フォームフィールドの名称が第１のパラメータに一致すること、及び非表示フォームフィールドに対応するサブミット値が第２のパラメータに対応することを決定したならば、フォームは、人間ユーザによって完成されたものであると想定され、したがって、サブミットされたデータは、有効性を認められる。サーバが、サブミットされたデータを、有効性を認められるものであると決定したならば、サーバは、サブミットされたデータを引き続き処理する。
【００４５】
図４は、フォーム検証のためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス４００は、システム１００において、例えばデバイス１０２において実行に移される。
【００４６】
ステップ４０２では、フォームを求めるリクエストが生成され、サーバに送信される。例えば、フォームを求めるリクエストは、ユーザがクライアントデバイスにおいてフォームを含むウェブページにアクセスすることに応答して生成されてよい。
【００４７】
ステップ４０４では、サーバから第１のトリガメッセージが受信され、第１のトリガメッセージは、第１のパラメータ及び第２のパラメータを含む。第１のトリガメッセージ及び第２のトリガメッセージは、クライアントデバイスにおいて受信される。一部の実施形態では、第１のトリガメッセージは、定義された変数も含む。一部の実施形態では、第３のパラメータを含む第２のトリガメッセージも、サーバから受信される。
【００４８】
ステップ４０６では、非表示フォームフィールドが、第１のトリガメッセージに基づいて生成され、非表示フォームフィールドに関連付けられている名称が、第１のパラメータに基づいて決定され、非表示フォームフィールドに対応する値が、第２のパラメータに基づいて決定される。第１のトリガメッセージは、第１のパラメータに基づいて、非表示フォームフィールドを決定させるように、及び第２のパラメータに基づいて、非表示フォームフィールドに対応する値を決定させるように構成された、コンピュータコードを含む。一部の実施形態では、非表示フォームフィールド生成機能の名称が、第３のパラメータに基づいて決定される。一部の実施形態では、定義された変数は、当座の値として非表示フォームフィールドに割り当てられる。一部の実施形態では、第２のパラメータに基づいて決定された検証文字列が、サーバから受信されている、又はクライアントデバイスにおいて生成されている。検証文字列は、クライアントデバイスにおける値割り当て事象の検出に応答して、非表示フォームフィールドの当座の値に取って代わるためのものである。
【００４９】
ステップ４０８では、値割り当て事象の検出に応答して、非表示フォームフィールドに対応する当座の値に取って代わらせるために、検証文字列が使用される。検証文字列は、第２のパラメータに基づいて決定される。上述のように、値割り当て事象は、例えば、マウスの移動又はキーワードからのキーの入力などの、クライアントデバイスにおいて受信された実在の人（人間）ユーザに関わる操作に関係付けられる任意の事象として構成されてよい。
【００５０】
ステップ４１０では、フォームサブミット動作の受信に応答して、フォームのサブミットに関連付けられているデータがサーバに送信される。例えば、フォームサブミット動作は、ウェブページにおいてフォームとともに提示されるボタンをユーザが選択することに関係付けられてよい。サーバは、フォームを通じてサブミットされたデータを、少なくとも一部には、サブミットされた名称を含むデータ及び非表示フォームフィールドの値を第１のパラメータ及び第２のパラメータと比較することに基づいて検証する。サーバが、サブミットされたデータを、有効性を認められるものであると決定したならば、サーバは、例えば、保護された情報へのアクセス権をクライアントデバイスに付与することに関連付けられているデータなどの更なるデータを、クライアントデバイスに送信してよい。
【００５１】
図５は、フォーム検証のためのプロセスの一実施形態を示すフローチャートである。一部の実施形態では、プロセス５００は、システム１００において実行に移される。
【００５２】
ステップ５０２では、フォームを求めるリクエストが、クライアントデバイスにおいて生成されてサーバに送信される。
【００５３】
ステップ５０４では、フォームを求めるリクエストの受信に応答して、サーバが、第１のパラメータ、第２のパラメータ、及び第３のパラメータを生成する。
【００５４】
ステップ５０６では、サーバによって、クライアントデバイスに、第１のトリガメッセージ及び第２のトリガメッセージが送信され、第１のトリガメッセージは、第１のパラメータ、第２のパラメータ、及び定義された変数を含み、第２のトリガメッセージは、第３のパラメータを含む。
【００５５】
ステップ５０８では、クライアントデバイスによって、非表示フォームフィールド生成機能の機能名称として第３のパラメータが使用される。
【００５６】
ステップ５１０では、非表示フォームフィールドを生成するために、クライアントデバイスによって、第３のパラメータを使用して非表示フォームフィールド生成機能が呼び出される。非表示フォームフィールドに関係付けられる名称は、第１のパラメータを含み、非表示フォームフィールドに対応する当座の値は、定義された変数を含む。
【００５７】
ステップ５１２では、値割り当て事象の検出に応答して、クライアントデバイスは、非表示フォームフィールドに対応する当座の値に取って代わらせるために、検証文字列を割り当てる。検証文字列は、第２のパラメータに基づいて決定される。
【００５８】
ステップ５１４では、随意として、サーバによって、追加非表示フィールドトリガメッセージがクライアントデバイスに送信される。追加非表示フィールドトリガメッセージは、複数の追加非表示フィールドを生成させてフォームに追加させるように構成される。
【００５９】
ステップ５１６では、クライアントデバイスにおいて受信されたフォームサブミット動作に応答して、フォームのサブミットに関連付けられているデータが、クライアントデバイスによってサーバに送信される。
【００６０】
ステップ５１８では、フォームのサブミットに関連付けられているデータが、第１のパラメータに一致する非表示フォームフィールドと、第２のパラメータに対応する非表示フォームフィールドに対応するサブミット値とを含むかどうかが、サーバによって決定される。
【００６１】
上述された様々なプロセス実施形態に関しては、簡単にするために、全て、一連の行為の組み合わせとして提示されている。しかしながら、本出願にしたがうと、一部のステップは、その他の順序で又は同時的に実行されてよいものがあるので、当業者ならば、本出願が、説明された行為の順序に限定されないことがわかっているべきである。
【００６２】
図６は、フォーム検証のシステムの一実施形態を示す図である。この例では、システム６００は、生成要素６０１と、第１のトリガ要素６０２と、検証要素６０３とを含む。一部の実施形態では、システム６００は、ウェブサーバに組み込まれていてよい、又は独立した実体としてウェブサーバに接続されていてよい。
【００６３】
要素は、１つ以上の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、又はプログラマブルロジックデバイス及び／若しくは特定の機能を実施するように設計された特殊用途向け集積回路などのハードウェアとして、又はそれらの組み合わせとして実装することができる。一部の実施形態では、要素は、本発明の実施形態で説明される方法を（パソコン、サーバ、ネットワーク機器などの）計算装置に実行させるための幾つかの命令を含み尚且つ（光ディスク、フラッシュストレージデバイス、モバイルハードディスクなどの）不揮発性のストレージ媒体に記憶させることができるソフトウェア製品の形で具現化することができる。要素は、１つのデバイスに実装されてよい、又は複数のデバイスに分散されてよい。
【００６４】
生成要素６０１は、クライアントデバイスから受信された、フォームを求めるリクエストに応答して、第１のランダムパラメータ及び第２のランダムパラメータを生成するように構成される。一部の実施形態では、第１のパラメータ及び第２のパラメータは、サーバによってランダムに生成される割り当て値である。一部の実施形態では、生成要素６０１は、第１のパラメータ用に及び第２のパラメータ用にそれぞれランダムに生成された各値を暗号化するように構成される。一例では、第１のパラメータ及び第２のパラメータを暗号化するために使用される暗号のタイプが、事前に決定されていてよい。別の例では、使用される暗号のタイプが、サーバで実行されるコンピュータプログラムに基づいて自動的に決定されていてよい。
【００６５】
第１のトリガ要素６０２は、第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージをクライアントデバイスに送信するように構成される。クライアントデバイスは、受信された第１のトリガメッセージに基づいて、フォームに追加される非表示フォームフィールドを含むフォームを生成するように構成される。非表示フォームフィールドの名称は、第１のパラメータに基づいて決定される。一部の実施形態では、第１のトリガ要素６０２、生成要素６０１、又はクライアントデバイスによって、第２のパラメータに基づいて、検証文字列も生成される。非表示フォームフィールドが生成された後、非表示フォームフィールドに対応する値として、先ず、当座の値が割り当てられる。検証文字列は、クライアントデバイスにおいて検出される値割り当て事象に応答して、最終的に、非表示フォームフィールドに事前に割り当てられた当座の値に取って代わるために使用される。
【００６６】
検証要素６０３は、フォームのサブミットに関連付けられているデータを受信及び検証するように構成される。検証要素６０３は、サブミットされたデータから、第１のパラメータに名称が一致する非表示フィールド（非表示フォームフィールド）を決定するように、及び該フィールドに関連付けられているサブミット値が第２のパラメータに一致するかどうかを決定するように構成される。非表示フォームフィールドに割り当てられた検証文字列が、第２のパラメータと同じである場合は、検証要素６０３は、非表示フォームフィールドに対応するサブミット値が、第２のパラメータと同じであるかどうかを決定するように構成される。非表示フォームフィールドに割り当てられた検証文字列が、少なくとも第２のパラメータを暗号化したものであると決定された場合は、検証要素６０３は、非表示フォームフィールドに対応するサブミット値が、少なくとも第２のパラメータを暗号化したものと同じであるかどうかを決定するように構成される。検証要素６０３が、サブミットされたデータからの非表示フィールドであって第１のパラメータに名称が一致する非表示フィールド（非表示フォームフィールド）と、該フィールドに関連付けられているサブミット値とが、第２のパラメータに一致すると決定したならば、検証要素６０３は、サブミットされたデータを、有効性を認められるものであると決定し、データの処理に進んでよい。そうでない場合は、検証要素６０３は、サブミットされたデータを、有効性を認められないものであると決定し、データの処理に進まなくてよい。
【００６７】
図７は、フォーム検証のシステムの一実施形態を示す図である。この例では、システム７００は、生成要素７０１と、第２のトリガ要素７０２と、第１のトリガ要素７０３と、第３のトリガ要素７０４と、検証要素７０５とを含む。一部の実施形態では、システム７００は、ウェブサーバに組み込まれていてよい、又は独立した実体としてウェブサーバに接続されていてよい。
【００６８】
要素は、１つ以上の汎用プロセッサ上で実行されるソフトウェアコンポーネントとして、又はプログラマブルロジックデバイス及び／若しくは特定の機能を実施するように設計された特殊用途向け集積回路などのハードウェアとして、又はそれらの組み合わせとして実装することができる。一部の実施形態では、要素は、本発明の実施形態で説明される方法を（パソコン、サーバ、ネットワーク機器などの）計算装置に実行させるための幾つかの命令を含み尚且つ（光ディスク、フラッシュストレージデバイス、モバイルハードディスクなどの）不揮発性のストレージ媒体に記憶させることができるソフトウェア製品の形で具現化することができる。要素は、１つのデバイスに実装されてよい、又は複数のデバイスに分散されてよい。
【００６９】
生成要素７０１は、クライアントデバイスから受信された、フォームを求めるリクエストに応答して、第１のランダムパラメータ、第２のランダムパラメータ、及び第３のパラメータを生成するように構成される。
【００７０】
第２のトリガ要素７０２は、第２のトリガメッセージをクライアントデバイスに送信するように構成される。第２のトリガメッセージは、第３のパラメータを含む。第２のトリガメッセージは、クライアントデバイスに、非表示フォームフィールド生成機能の機能名称として第３のランダムパラメータを使用させるように構成される。一部の実施形態では、第２のトリガメッセージは、更に、クライアントデバイスに、非表示フォームフィールド生成機能に対して難読化処理を実施させるように構成される。
【００７１】
第１のトリガ要素７０３は、第１のパラメータ及び第２のパラメータを含む第１のトリガメッセージをクライアントデバイスに送信するように構成される。
【００７２】
一部の実施形態では、第１のトリガメッセージは、更に、定義された変数を含む。クライアントデバイスは、受信された第１のトリガメッセージに基づいて、フォームに追加される非表示フォームフィールドを含むフォームを生成するように構成される。非表示フォームフィールドは、第３のパラメータに関連付けられている機能名称に関連付けられている非表示フォームフィールド生成機能を使用して生成されてよい。非表示フォームフィールドの名称は、第１のパラメータに基づいて決定される。一部の実施形態では、システム７００又はクライアントデバイスによって、第２のパラメータに基づいて検証文字列も生成される。非表示フォームフィールドが生成された後、非表示フォームフィールドに対応する値として、先ず、当座の値が割り当てられる。一部の実施形態では、当座の値は、第１のトリガ要素７０３によって送信された、定義された変数である。検証文字列は、クライアントデバイスにおいて検出される値割り当て事象に応答して、最終的に、非表示フォームフィールドに事前に割り当てられた当座の値に取って代わるために使用される。
【００７３】
第３のトリガ要素７０４は、追加非表示フィールドトリガメッセージをクライアントデバイスに送信するように構成される。追加非表示フィールドトリガメッセージは、複数の追加非表示フィールドを生成させてフォームに追加させるように構成される。
【００７４】
検証要素７０５は、フォームのサブミットに関連付けられているデータを受信及び検証するように構成される。検証要素７０５は、第１のパラメータに一致する名称に関連付けられている非表示フィールドを認識することに基づいて、検証を実施するために使用されるサブミットされたデータのなかの正しい非表示フィールド、すなわち非表示フォームフィールドを識別するように構成される。このように、悪意ある自動フォーム完成プログラムと異なり、検証要素７０５は、追加非表示フィールドトリガメッセージに基づいて生成されるような複数の非表示フィールドの存在に混乱することはない。
【００７５】
非表示フォームフィールドに割り当てられた検証文字列が、第２のパラメータと同じである場合は、検証要素７０５は、非表示フォームフィールドに対応するサブミット値が、第２のパラメータと同じであるかどうかを決定するように構成される。非表示フォームフィールドに割り当てられた検証文字列が、少なくとも第２のパラメータを暗号化したものであると決定された場合は、検証要素７０５は、非表示フォームフィールドに対応するサブミット値が、少なくとも第２のパラメータを暗号化したものと同じであるかどうかを決定するように構成される。検証要素７０５が、サブミットされたデータからの非表示フィールドであって第１のパラメータに名称が一致する非表示フィールド（非表示フォームフィールド）と、該フィールドに関連付けられているサブミット値とが、第２のパラメータに一致すると決定したならば、検証要素７０５は、サブミットされたデータを、有効性を認められるものであると決定し、データの処理に進んでよい。そうでない場合は、検証要素７０５は、サブミットされたデータを、有効性を認められないものであると決定し、データの処理に進まなくてよい。
【００７６】
本明細書に含まれる実施形態は、進行的に説明されており、各実施形態の説明は、その他の実施形態との相違箇所に焦点を当てており、その説明は、各実施形態の同一の又は類似の部分を相互に参照されてよい。システムタイプの実施形態に関しては、それらがプロセス実施形態と基本的に同様であるゆえに、それらの説明は比較的単純である。関連箇所については、方法実施形態における一部の説明を参照せよ。
【００７７】
最後に、本文書では、「第１の」及び「第２の」などの関係を示す用語が、或る実体又は動作と別の実体又は動作とを区別するためにのみ使用され、これらの実体間又は動作間には、何らかの実際の関係又は順序があることが必然とされることも示唆されることもないことが、説明されるべきである。更に、「含む」又は「内包する」という用語、又はこれらの別形は、非排他的な意味で捉えられる。したがって、一連の要素を含むプロセス、方法、物体、又は機器は、それらの要素を含むのみならず、明示されていないその他の要素、又はこのようなプロセス、方法、物体、若しくは機器に本来備わっている要素も含む。更なる制限がなければ、「ａ（ｎ）……を含む」という表現によって限定される要素について、該要素を含むプロセス、方法、物体、又は機器のなかに同一要素が追加で存在することは排除されない。
【００７８】
説明の便宜上、上記のシステムを説明するときは、各機能が個別の要素として説明されている。もちろん、本出願を実現する際は、様々な要素の機能が同じ又は複数のソフトウェア構成及び／又はハードウェア構成のなかで実現されてよい。
【００７９】
上記の実施形態に関する説明からわかるように、当業者ならば、本出願が、必要な汎用ハードウェアプラットフォームの形態をソフトウェアの形態に加えたものを活用して実現可能であることを、はっきり理解することができる。この理解に基づいて、本出願の技術的提案は、本質的にであれ、又は先行技術に寄与する部分に関してであれ、ソフトウェア製品の形で具現化することができる。これらのコンピュータソフトウェア製品は、本出願の実施形態又は本出願の実施形態の一部において説明された方法を一連のコンピュータ機器（パソコン、サーバ、又はネットワーク機器などでありえる）に実行させるために使用される特定の数の命令を含む、例えばＲＯＭ／ＲＡＭ、ディスケット、及びコンパクトディスクなどのストレージ媒体に記憶させることができる。
【００８０】
本文書は、本出願の原理及び実施形態を開設するために、具体例を用いてきた。上記の実施形態の説明は、本開示の方法及びその核となる概念の理解を助けるためのものにすぎない。更に、当業者ならば、本開示の概念にしたがって、具体的適用及び適用範囲に対して変更を加えることができる。以上をまとめると、本説明の内容は、本出願を制限するものと理解されてはならない。
【００８１】
以上の実施形態は、理解を明瞭にする目的で幾らか詳細に説明されてきたが、本発明は、提供された詳細に限定されない。本発明を実現するには、数々の代替的手法がある。開示された実施形態は、例示的なものであり、限定的なものではない。
【図１】
0005868529.tif 000002
【図２】
0005868529.tif 000003
【図３】
0005868529.tif 000004
【図４】
0005868529.tif 000005
【図５】
0005868529.tif 000006
【図６】
0005868529.tif 000007
【図７】
0005868529.tif 000008