"ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;を有する方法。前記入力検証コードは、クライアント側の検証コードを含む、請求項1記載の方法。前記インターラクティブフォームのための前記コードは、JavaScriptコードを含む、請求項1記載の方法。前記少なくとも1つの制約を抽出する工程は:前記インターラクティブフォームのための前記コードを、フォームデータの送信に関連するステートメントを求めてサーチする工程と;前記少なくとも1つの制約を収集するために、前記ステートメントから逆方向に前記コードを移動する工程と;を有する請求項1記載の方法。前記少なくとも1つの制約を抽出する工程は、最も弱い前提条件を適用する前記入力検証コードの記号解析に基づいている、請求項1記載の方法。前記見いだす工程は、シンボリックストリングソルバを用いて、前記文字列の値を見いだす工程を含む、請求項1記載の方法。前記少なくとも1つの制約は、前記シンボリックストリングソルバのオートマトンとして利用される、請求項6記載の方法。前記少なくとも1つの制約に対する第1のオートマトンを構成する工程と;前記少なくとも1つの制約の意図に基づいて、第2のオートマトンを構成する工程と;前記少なくとも1つの制約が前記意図をインプリメントしているか否かを確認するために、前記第1のオートマトンと、前記第2のオートマトンとを比較する工程と;を更に有する、請求項1記載の方法。前記文字列の値を見いだす工程は、1つ以上の制約の少なくとも1つの制約に不適合となるように、前記文字列の値を生成する工程を含み、当該方法は、サーバが前記1つ以上の制約をインプリメントしているか否かを確認するために、前記文字列の値を前記サーバに通信する工程、を更に有する、請求項1記載の方法。パラメータ化されたアタックベクトルを提供する工程であって、前記パラメータ化されたアタックベクトルは、アタックをシミュレートするパラメータ化された文字列を含み、かつ、前記文字列の値を見いだす工程は、文字列の値が1つ以上の制約を満足し、かつ、前記パラメータ化された文字列の条件を満足するよう、文字列の値を生成する工程を含む、パラメータ化されたアタックベクトルを提供する工程と;前記文字列の値の送信が前記ウェブアプリケーションによって許されているか否かを確認する工程と;を更に有する、請求項1記載の方法。ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;をコンピュータに実行させるプログラム。しかしながら、ウェブアプリケーションのフォームに関するアプリケーションの自動的なテストの課題は、複雑さが増加しているということである。これは、ウェブアプリケーションには、複雑な入力検証コードが存在し、入力されたデータをチェックし、それが特定の制約に適合しているかを確認するという事実があるからである。従来の自動的なテストは、このような制約を考慮しておらず、そのため、テストの範囲は限られたものとなる。ユーザーネームの制約の例を挙げれば、ユーザーネームは、6から15文字の長さであり、英数字以外の文字を含んではならず、少なくとも1つの大文字、及び少なくとも1つの数字がなければならないというものである。本方法の一観点によれば、ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;を有する方法が提供される。特定の実施形態は、ウェブアプリケーション、特にWeb2.0アプリケーションの検証に関連している。Web2.0アプリケーションは、一般的に動的又はインターラクティブウェブアプリケーションと呼ばれている。このウェブアプリケーションは、サーバとの間で非同期コミュニケーションメカニズムを使用している。これによって、全てのページ及び情報は、リロードしたり毎回通信したりする必要はない。これは、ワールドワイドウェブ又は他の適切なネットワーク環境を介した、インターラクティブな情報共有、インターオペラビリティ、ユーザ中心のデザイン、あるいはコラボレーションを容易にする。ウェブアプリケーション、及び特にウェブ2.0アプリケーションは、しばしば、ブラウザのウィンドウ内に、複数のウィジェットwidgetsを形成し、利用しており、すなわち、これを特徴としている。ウィジェットは、一般的には、スタンドアロンのアプリケーション又はコードのポータブルチャンクである。これは、例えばハイパーテキストマークアップランゲージHTMLベースのウェブページのような、構造化された独立に描画され得るドキュメント内にインストールされ、かつ実行され得る。あるいは、これは、サードパーティのサイトにユーザによって埋め込まれ、このユーザが著作権を有する例えば、ウェブページ、ブログ、又はソーシャルメディアサイトのプロフィールが挙げられる。ウェブ2.0アプリケーションの例は、ウェブベースのコミュニティ、ホステッドサービス、ソーシャルネットワークサイト、ビデオシェアリングサイト、又はWiki等と協働して動作してもよい。特定の実施形態は、ウェブアプリケーションのフォームフィールドのための入力検証コードの自動的な抽出、静的解析技術を利用した入力検証コードの解析、フィールド変数が満足すべき制約の抽出、制約を満足する各フィールドの値を見いだすシンボリックストリングソルバsymbolicstringsolverの利用、及び、入力制約を満足する文字列をフィールドに入力することに関連する。図1は、検証システム102の実施形態の環境100の例を示している。検証システム102は、1つ以上のハードウエアコンポーネント、1つ以上のソフトウエアコンポーネント、又はハードウエア及びソフトウエアコンポーネントの組合せを含んでいる。検証システム102は、1つ以上のコンピュータシステム内で実行される。コンピュータシステムについては、図7を用いて詳述する。検証システム102は、ウェブアプリケーション104にアクセするよう構成されている。特定の実施形態においては、ウェブアプリケーション104は、少なくともその一部が、検証システム102のコンピュータシステムに配置されている。別の実施形態においては、ウェブアプリケーション104は、1つ以上の異なるコンピュータシステムに配置されてもよい。これらのコンピュータシステムは、検証システム102をホスティングするコンピュータシステムに直接、又は、間接的に接続されている。ウェブアプリケーション104は、その少なくとも一部が、1つ以上のサードパーティのサーバ又はコンピュータシステムによってホスティングされてもよい。一般的に、ウェブアプリケーションは、ウェブブラウザ例えば、MICROSOFTWINDOWSINTERNETEXPLORER,MOZILLAFIREFOX,APPLESAFARI,GOOGLECHROME,又はOPERA、あるいは、その他のクライアントアプリケーションを介して、ネットワーク上でアクセスされ得る。あるいは、ウェブブラウザをサポートする言語によってコーディングされたコンピュータソフトウエアアプリケーション場合によっては、このアプリケーションを実行させるためにウェブブラウザの助けを借りるによってアクセスされ得る。ウェブアプリケーションは、広く普及している。この理由は、ウェブブラウザに偏在性ubiquityがあること、リモートのコンピューティングディバイスにクライアントシンクライアント:thinclientとしばしば呼ばれるとして導入ランチ:launchされたウェブブラウザの利便性があること、そして、ウェブアプリケーションをアップデート及び維持するためにリモートクライアントにソフトウエアを配布しインストールする必要がないという付随した能力があることの結果である。ウェブアプリケーションをインプリメントするためには、ウェブアプリケーションは、しばしば、関連するウエッブサイトのバックエンドサーバに提供されている1つ以上のリソースにアクセスすることを必要とする。加えて、ウェブアプリケーションは、しばしば、他のアプリケーションに関連する追加的なリソースにアクセスすることを必要とする。エンドユーザのマシンクライアントデバイス上に配置されたウェブアプリケーションは、エンドユーザのマシンのディスプレイにウェブページを描画させる。ウェブブラウザと共に、あるいはこれと関連して実行されるウェブアプリケーションは、ウェブブラウザに対して、ディスプレイにウェブページを描画させる。ウェブアプリケーションのウェブページは、典型的に、ウェブアプリケーションの他のウェブページへの埋め込まれたリンクを含む。リンクは、これに加えて、このウェブアプリケーション以外の、あるいはこれと関連しないウェブページ及びウェブサイトへのリンクを含む。動的ウェブアプリケーションは、特に、しばしば、複数の埋め込まれたリンクを含む。このリンクは、現在表示しているウェブページに、ハイパーリンク、アイコン、又はその他のクリッカブルな特徴として描画され得る。典型的な動的ウェブアプリケーションは、このウェブアプリケーションをホスティングしているサーバに存在する複数のリソース、あるいは外部のサードパーティのサーバから取り出される複数のリソースを含む。ウェブページ又はウェブページを描画するリソースは、それ自身、複数の埋め込まれたリソースを含んでおり、データレコードを含んでもよい。データレコードとしては、例えば、テキスト情報コンテンツ、又は更に複雑なデジタルエンコードされたマルチメディアコンテンツ、例えばソフトエアプログラム、又は他のオブジェクト、グラフィックス、イメージ、オーディオ信号、ビデオ等が挙げられる。ウェブページを作成する1つの主要なマークアップランゲージとしては、ハイパーテキストマークアップランゲージHTMLが挙げられる。その他、ウェブブラウザをサポートする言語及び技術としては、XMLExtensibleMarkupLanguage、XHTMLExtensibleHypertextMarkupLanguage、JavaScript、CSSCascadingStyleSheet、JAVA等がある。例えば、HTMLによって、アプリケーション又はウェブページデベロッパは、構造的ドキュメントを作ることができる。これは、テキスト及びリンク、並びにページ内に埋め込まれ得るイメージ、ウェブアプリケーション及び他のオブジェクト例えば、フォームフィールドのための構造的セマンティックスを記述することによってなされる。一般的に、ウェブページは、静的構造ドキュメントとしてクライアントに届けられる。しかしながら、ページに埋め込まれたウェブエレメント例えば、実行可能なJavaScriptコードセグメントを使用することによって、ページ又は一連のページによってインターラクティブな体験が得られる。クライアントデバイスにおけるユーザセッションにおいて、ウェブブラウザは、ウェブアプリケーション又はウェブページをホスティングするウェブサイトから受信され、又は検索されたページ及び関連するリソース、並びに他のウェブサイトからの潜在的なリソースを解釈し表示する。例えば、ウェブブラウザによって構造化されたドキュメントHTMLが受信されると、このウェブブラウザは、JavaScriptコードセグメントを含む、埋め込まれたコールを実行する、その後、サードパーティホスト又はウェブサイトからリソースをコールし、又はリクエストする。特定の実施形態においては、検証システム102は、ウェブアプリケーション104を、ネットワークを介してアクセスする。ネットワークとしては、インターネット、エクストラネット、バーチャルプライベートネットワークVPN、ローカルエリアネットワークLAN、ワイヤレスLANWLAN、ワイドエリアネットワークWAN、メトロポリタンエリアネットワークMAN、ワールドワイドウェブの一部インターネット、又はその他のネットワーク又はこれらの複数のネットワークの組合せが挙げられる。本開示は、いかなる適切なネットワークをも利用できる。これを介して、ウェブアプリケーション104は、検証システム102と協働して動作する。特定の実施形態においては、検証システム102は、ウェブアプリケーション104をホスティングしている1つ以上のサーバとセッションを開始する。これは、検証システムが、ウェブアプリケーション104のために、これらのホスティングサーバに対して、例えばHTTPリクエストの形態で、リクエストを送信することによって行われる。特定の実施形態においては、このリクエストを受信すると、ウェブアプリケーション104をホスティングしているサーバは、HTML又は構造的ドキュメントの形で、ウェブアプリケーション104の描画可能なインプリメンテーションを生成する。この構造的ドキュメントには、検証システム102によってウェブページを描画するための、構造的ドキュメントコード、及び表示されるべきコンテンツばかりでなくあらゆる埋め込まれたリソース又は埋め込まれたコール及びリソースの識別子が含まれる。しばしば、ウェブブラウザは、インターラクティブなフォームの表示に関連するJavaScriptコードセグメント又は他の適切なコードを読み込み、かつ、このコードセグメントに基づき、インターラクティブなフォームフィールドを描画し表示し得る。ウェブブラウザのウィンドウに表示されたこのインターラクティブフォームが、図2に示されている。図2に示すように、ウェブブラウザウィンドウ200は、静的な文字列202、フィールド204、及び送信ボタン206を含むフォームを表示してもよい。静的な文字列202は、ウェブブラウザのユーザに対して、ユーザが、隣接するフィールド204に入力すべきデータのタイプを示す。各フィールド204は、ユーザインターフェース要素であり、ウェブブラウザのユーザが、例えば、キーボードを利用してそのフィールドにデータを入力することを可能とする。データフィールドにデータを入力した後、ユーザは、送信ボタン206をクリックし又は、ユーザによるデータの送信の要求を示す他のアクションを実行し、そして、ウェブブラウザは、その後、サーバ例えば、ウェブアプリケーションをホスティングしているサーバに対してこのデータを送信する。ある例では、インターラクティブなフォームコードは、クライアント側の検証コードを含んでもよい。このコードはフィールド204に入力されたデータの制約を規定する。例えば、制約は、ユーザーネームに関連するフィールドの最小の長さ及び最大の長さの制限、及び/又はこのフィールドに入力できる文字のタイプの制限を規定してもよい。他の例においては、郵便番号に関連するフィールドは、5桁の数字の値に制限してもよい。ユーザネームフィールドに対するクライアント側の検証コードが、図3に示されている。図3のコードの例では、ユーザーネームの長さの制約が、5から15文字の間、そして、ユーザーネームの文字の制約として、アルファベットletter、数字、及びアンダースコア以外を排除する。特定の実施形態において、検証システム102は、ウェブアプリケーション104を検証するために使用するユーザレベル検証条件106にアクセスする。特定の実施形態においては、ユーザレベル検証条件106は、これらのウェブアーティファクトのインプリメンテーションのレベルにおける詳細な制約ではなく、ウェブアプリケーションの様々なウェブアーティファクトに対する自然な言語基準を含む。特定の実施形態では、検証条件106は、ウェブアプリケーション104のベストケースであってもよい。テストケースは、ウェブアプリケーションの実行の特定のシナリオを含んでもよい。例えば、ユーザによって実行される特定のシーケンスのステップ、あるいは、何が、このシナリオにおいて、ウェブアプリケーションの正しい、又は、正当な動作behaviorであるかの明示的な又は暗黙の規定を含んでもよい。単純に、テストケースは、正しさのチェックと組み合わされたユースケースと捉えてもよい。他の実施形態において、検証条件106は、ウェブアプリケーション104の予想される動作の、より明確なexpressive表現であってもよい。そして、数学的表現形式formalism、例えば時間的論理temporallogicで記述されてもよい。検証結果108は、ウェブアプリケーション104の1つ以上の検証条件106又は他のテスト又はユースケースの検証の結果としての検証システム102の出力である。図4に更に詳細に示すように、検証システム102は、ガイダンスエンジン210、ウェブアプリケーションクローラcrawler212、条件ジェネレータ216、及び検証ツールキット220を含んでもよい。特定の実施形態においては、ガイダンスエンジン210の助けを借りて、クローラ212は、ウェブアプリケーション104をアクセスし、かつクロールし、ナビゲーションモデル214を出力する。特定の実施形態においては、条件ジェネレータ216は、ユーザレベル検証条件106の少なくとも一部に基づいて、インプリメンテーションレベル検証条件218を生成する。すなわち、条件ジェネレータ216は、入力特性又はテストケースとして、本明細書で説明したように自然言語表記で表された表現を取り入れ、そして、コンピュータすなわち機械読み取り可能な命令インプリメンテーションレベル検証条件218を生成する。これは、検証ツールキット220に入力される。検証ツールキット220は、コンピュータ読み取り可能な検証条件218を読み取るよう構成されている。特定の実施形態において、検証ツールキット220は、インプリメンテーションレベル検証条件218と共にナビゲーションモデル214を使用して、ウェブアプリケーション104を検証し、その後、検証結果108を出力するよう構成されている。より詳細には、検証ツールキット220は、入力として、ナビゲーションモデル214及びインプリメンテーションレベル検証条件218を受け入れ、ウェブアプリケーション104を検証するために、ナビゲーションモデル214に対して検証条件218をチェックするよう構成されてもよい。例えば、検証結果108は、一つ以上の結果、テーブル、又はグラフを含んでもよい。これは、検証システム102のメモリ又はその他の場所に記憶される。そして、これは、各検証条件218が満足されているか否か、又は、更に一般的には、1つ以上のナビゲーション又はビジネスロジックの特徴又は条件が満足されているか否かを含む、ウェブアプリケーション104の客観的な評価を提供する。加えて、ある実施形態においては、条件ジェネレータ216は、本明細書に記載されているようにウェブアーティファクトの自然言語マッピングを入力として受け入れ、本明細書に記載されているように、ウェブアーティファクトのマッピングを用いて、自然言語表現のユースケース又はテストケースを生成し、その後、この生成された表現に基づいて、インプリメンテーションレベル検証条件218を生成する。図5は、検証システム102により、自動的に、ウェブアプリケーション104のインターラクティブフォームに値を入力する実施形態のモデル500のフローチャートを示している。方法500は、一般的に、ウェブアプリケーションクローラ212がウェブアプリケーション104にアクセスする502から開始する。ウェブアプリケーションクローラ212は、コードJavaScript,HTML等を読み込むことにより、ウェブアプリケーション104にアクセスする。ステップ504で、クローラ212が、インターラクティブフォームを表示するウェブアプリケーション104の特定のページをアクセスすると、クローラ212は、そのウェブアプリケーション104から入力検証コード例えば、図3に示したクライアント側の検証コードを抽出する。ステップ504と並行して又はその後に、方法500は、ステップ506に進む。このステップでは、クローラ212は、抽出した入力検証コードを分析し、様々なフォームフィールドの制約を抽出する。クローラ212は、逆方向静的分析backwardsstaticanalysisを実行することによって、制約を抽出する。この分析によって、フォームデータの送信submission例えば、formsubmitステートメント、on-clickステートメント等に関連するコードのステートメントから分析を開始する。そして、逆方向にコードを移動し、フォームデータを成功裏に転送するために満足すべき、各々の変数のための制約を収集する。入力検証コードは、入力検証コードの制御フローグラフの構成に基づいてもよい。あるいは、または、これに加えて、抽出は、制約を満足する最大のセットの動作behaviorを提供するために、最も弱い前提条件を持つコードの記号解析symbolicanalysisに基づいてもよい。図6は、図3に示す入力検証コードから抽出されたユーザーネームのための制約の例を示している。ステップ504及び506と並行して又はその後に、方法500は、ステップ508に移る。ここで、クローラ212は、抽出された制約を満足する文字列の値を生成する。ある実施形態において、クローラ212は、抽出された制約を満足する文字列ストリングの値を生成するために、シンボリックストリングソルバを含んでもよい。このような実施形態において、このストリングソルバは、抽出された制約をそのソルバのオートマタautomataとして使用する。ステップ504、506及び508と並行して又はその後に、方法500は、ステップ510に移行する。ここで、クローラ212は、自動的にこの生成された文字列の値をウェブアプリケーション104のインターラクティブフォームの適切なフィールドに入力し、そして、フォームを送る。都合よく、上述の方法及びシステムは、ウェブアプリケーションの検証システムに対して自動的にフォームデータを入力できるようにする。従って、適合したフォームデータの入力のための人間の介在の必要性を排除する。加えて、上述の方法及びシステムは、後述するユースケースを含む様々なアプリケーションを含んでいる。なお、これに限定されるものではない。例えば、フォームデータが送信されるサーバが、クライアント側の検証コードと同じチェックをインプリメントすることを確保するために、上述の方法及びシステムが利用される。このような一貫性の検証は、クライアント側の検証をディスエーブルすることにより例えば、Javascript又はJavascriptベースのフォームをディスエーブルすることにより、ハイパーテキスト転送プロトコルリクエストを直接サーバに送るよう構成されたプログラムを利用することなどによって実行される。そして、入力検証条件をパスするかあるいは入力条件を満たさないviolateデータをサーバに送る。クローラ212のこのストリングソルバは、1つ以上の制約を無視することにより検証制約を満たさないデータを提供してもよい例えば、制約が文字の長さを5から15文字であると要求する場合、このストリングソルバは、この制約を破る制約に不適合のデータを提供するために、5文字よりも少ない文字列、及び/又は、15文字を超える文字列を生成してもよい。他の実施形態として、上述の方法及びシステムは、サーバに対するアタックのシミュレートに利用されてもよい。例を示すと、アタックベクトルがストリングソルバの制約として指定され、これによって、ストリングソルバは、アタックをシミュレートするフォームフィールドに自動的に入力される文字列を生成する。このようなアタックベクトルは、静的文字列例えば、script>alert</script>又はパラメータ化された、以下の文字列である。例えば:alertこのような、パラメータ化されたアタックは、可変長のアタックベクトルであり、他の点では、フィールドの他の制約を満たす例えば、文字列長、許された文字、等。したがって、アタックベクトルは、他のフィールド入力制約によって却下されるようなアタックをランダムに試みるのではなく、アタックがクライアント側のウェブアプリケーションによって受け入れられ得るフィールドにターゲットを当てたものであり、例えば、ユーザネームフィールドの制約は、いずれのアタックも許すことはないであろう。したがって、このようなフィールドは、ランダムにアタックを試みる意味はないであろう。他の利点としては、アタックが構成されるべきサーチスペースが狭まることである。更に他の実施形態としては、上述の方法及びシステムは、入力検証コードの意図intentがインプリメントされているか否かをチェックするために用いられてもよい。実例を示すと、入力検証コードのための意図の指定がある場合、検証システム102は、入力検証コードが実際に意図した目的objectを達成したかが確認されてもよい。特定の例として、入力検証コードが、URLuniformresourcelocator内にchat.comのみを許容すると仮定する。更に、インプリメントされている場合、この入力検証コードが、URL内のchatの文字をチェックするのみである場合を仮定する。すなわち、evilchatは制約をパスし、かつサーバと通信することを許されると仮定する。このような、入力検証コードから抽出された変数のための制約オートマトンを構成し、意図した特徴propertyのためのオートマトンを構成し、かつ、これらのオートマタが同じであるかを比較することによって、インプリメンテーションと意図との間の不整合が検知され得る。このオートマタが同じであれば、その検証コードは意図した目的を達成しているということになる。図7は、コンピュータシステム600の例を示している。特定の実施例において、1つ以上のコンピュータシステム600が、本明細書に記載され又は示された1つ以上の方法の1つ以上のステップを実行する。特定の実施形態において、1つ以上のコンピュータシステム600が、本明細書に記載され又は示された機能を提供する。特定の実施形態において、1つ以上のコンピュータシステム600上で動作するソフトウエアは、本明細書に記載され又は示された1つ以上の方法の1つ以上のステップを実行し、あるいは、本明細書に記載され又は示された機能を提供する。特定の実施形態は、1つ以上のコンピュータシステム600の1つ以上の部分を含む。本明細書の開示は、いかなる適切な数のコンピュータシステム600をも含み得るよう意図されている。この開示は、いかなる適切な物理的形態をとるコンピュータシステム600をも意図している。限定ではなく、例示として、コンピュータシステム600は、組み込み型コンピュータシステム、システムオンチップSOC、シングルボードコンピュータシステムSBC例えば、コンピュータオンモジュールCOM又はシステムオンモジュールSOM、デスクトップコンピュータシステム、ラップトップ又はノートブックコンピュータシステム、インターラクティブキオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、PDApersonaldigitalassistant、サーバ、又は、これらの複数のあらゆる組合せであってもよい。適切な場合には、コンピュータシステム600は、1つ以上のコンピュータシステム600を含んでもよい。たとえば、一体型の又は分散型のもの、複数のロケーションに分散しているもの、複数のマシンに分散しているもの、又は、1つ以上のネットワーク上の1つ以上のクラウドコンポーネントを含むククライウドに存在しているものが挙げられる。適切な場合には、1つ以上のコンピュータシステム600は、空間上又は時間上の実質的制限なしに、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。限定ではなく、例示として、1つ以上のコンピュータシステム600は、リアルタイム又はバッチモードで、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。1つ以上のコンピュータシステム600は、異なる時刻に又は異なる場所で、適切な場合には、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。特定の実施形態において、コンピュータシステム600は、プロセッサ602、メモリ604、ストレージ606、入出力I/Oインターフェース608、通信インターフェース610、及びバス612を含む。本開示は、特定の配置で特定の数のコンポーネントを有する特定のコンピュータシステムを記載しているが、この開示は、適切ないかなる配置でも、適切ないかなる数の適切ないかなるコンポーネントを有する、適切ないかなるコンピュータシステムをも意図している。特定の実施形態において、プロセッサ602は、コンピュータシステムを作り上げるための、命令を実行するハードウエアを含む。限定ではなく、例示として、プロセッサ602は、命令を実行するために、内部レジスタ、内部キャッシュ、メモリ604、又はストレージ606から命令を取り出しフェッチし、これらをデコードし実行する。そして、その後、内部レジスタ、内部キャッシュ、メモリ604、又はストレージ606に1つ以上の結果を書き込む。特定の実施形態において、プロセッサ602は、データ、命令、又はアドレスのための、1つ以上の内部キャッシュを含んでもよい。本開示では、プロセッサ602は、適切な場合には、適切な数の適切な内部キャッシュを含むことを意図している。限定ではなく、例示として、プロセッサ602は、1つ以上の命令キャッシュ、1つ以上のデータキャッシュ、及び1つ以上のTLBtranslationlookasidebuffersを含んでもよい。命令キャッシュ内の命令は、メモリ604又はストレージ606内の命令のコピーであってもよい。そして、この命令キャッシュは、プロセッサ602によるこれらの命令の取り出しをスピードアップし得る。データキャッシュ内のデータは、プロセッサ602がこれによって命令を実行するためのメモリ604又はストレージ606内のデータのコピー、プロセッサ602で実行された以前の命令の結果でありプロセッサ602で後の命令によりアクセスされるか又はメモリ604又はストレージ606に書き込むためのもの、又は他の適切なデータであってもよい。このデータキャッシュは、プロセッサ602による読み書きのスピードをアップさせ得る。TLBは、プロセッサ602のための仮想アドレス変換をスピードアップさせる。特定の実施形態において、プロセッサ602は、データ用、命令用、アドレス用の、1つ以上の内部レジスタを含んでもよい。本開示は、適切な場合において、プロセッサ602は、適切ないかなる数の、適切ないかなる内部レジスタを含んでもよい。適切な場合には、プロセッサ602は、1つ以上の論理演算ユニットALUを含んでもよく、マルチコアプロセッサであってもよく、又は、1つ以上のプロセッサ602を含んでもよい。この開示は、特定のプロセッサを記載し、示しているが、この開示は、適切ないかなるプロセッサをも意図している。特定の実施例において、メモリ604は、プロセッサ602が実行する命令、又は、プロセッサ602が動作を行うデータを記憶するためのメインメモリを含む。限定ではなく、例示として、コンピュータシステム600は、ストレージ606又は他のソース例えば、他のコンピュータシステム600からメモリ604に、命令をロードしてもよい。プロセッサ602は、その後、メモリ604から内部レジスタ又は内部キャッシュに、命令をロードしてもよい。この命令を実行するために、プロセッサ602は、命令を、内部レジスタ又は内部キャッシュから取り出し、そしてそれらをデコードしてもよい。命令を実行中又は実行後において、プロセッサ602は、1つ以上の結果これは、中間又は最終結果であるを内部レジスタ又は内部キャッシュに書き込んでもよい。プロセッサ602は、これらの結果の1つ以上を、メモリ604に記憶する。特定の実施形態において、プロセッサ602は、ストレージ606又はその他の場所ではなく1つ以上の内部レジスタ又は内部キャッシュ内の命令のみ実行し、かつ、ストレージ606又はその他の場所ではなく1つ以上の内部レジスタ又は内部キャッシュ内のデータのみに作用する。1つ以上のメモリバスこれらの各々は、アドレスバス及びデータバスを含むは、プロセッサ602とメモリ604とを接続する。バス612は、上述のように1つ以上のメモリバスを含んでもよい。特定の実施形態において、1つ以上のメモリマネジメントユニットMMUが、プロセッサ602とメモリ604との間に存在し、そしてプロセッサ602によりリクエストされたメモリ604へのアクセスを容易にさせる。特定の実施形態において、メモリ604は、ランダムアクセスメモリRAMを含む。このRAMは、適切な場合には、揮発性メモリであってもよい。また、適切な場合には、このRAMは、ダイナミックランダムアクセスメモリDRAM又はスタティックRAMSRAMであってもよい。更に、適切な場合には、このRAMはシングルポート又はマルチポートRAMであってもよい。本開示は、適切ないかなるRAMであってもよい。メモリ604は、適切な場合には、1つ以上のメモリ604を含んでもよい。本開示は、特定のメモリを記載し、かつ示しているが、本開示はいかなる適切なメモリをも利用することを意図している。特定の実施形態において、ストレージ606は、データ又は命令のためのマスストレージを含む。限定ではなく、例示として、ストレージ606は、HDD、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、又はUSBドライブ、又は、これら複数の組合せを含んでもよい。ストレージ606は、適切な場合には、リムーバブル又は、リムーバブルでない固定媒体を含んでもよい。ストレージ606は、適切な状況に応じて、コンピュータシステム600の内部又は外部にあってもよい。特定の実施形態において、ストレージ606は、不揮発性、ソリッドステートメモリであってもよい。特定の実施形態において、ストレージ606は、リードオンリメモリROMを含む。適切な場合には、このROMは、マスクプログラムされたROM、プログラマブルROMPROM、消去可能型PROMEPROM、又はフラッシュメモリ、又はこれら複数の組合せであってもよい。この開示は、マスストレージ606が、適切ないかなる物理的形態をとっていてもよい。ストレージ606は、プロセッサ602とストレージ606との間の通信を容易化するために、適切な1つ以上のストレージコントロールユニットを含んでもよい。適切な場合には、ストレージ606は、1つ以上のストレージ606を含んでもよい。本開示は、特定のストレージを記載し、示したが、この開示は、適切ないかなるストレージを用いることも意図している。特定の実施形態において、I/Oインターフェース608は、ハードウエア、ソフトウエア、又はその両方であり、コンピュータシステム600と1つ以上のI/Oデバイスとの間の通信のための1つ以上のインターフェースを提供する。コンピュータシステム600は、適切な場合には、1つ以上のI/Oデバイスを含む。1つ以上のこれらのI/Oデバイスは、人間とコンピュータシステム600とのコミュニケーションを可能とさせ得る。限定ではなく、例示として、I/Oは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、他の適切なI/Oデバイス、又は、これら複数の組合せを含み得る。I/Oデバイスは、1つ以上のセンサを含んでもよい。この開示は、適切ないかなるI/Oデバイス、及び、これらに対する適切ないかなるI/Oインターフェース608を用いることをも意図している。適切な場合には、I/Oインターフェース608は、1つ以上のデバイス、又は、プロセッサ602が1つ以上のこれらのI/Oデバイスをドライブすることを可能とするソフトウエアドライバを含んでもよい。I/Oインターフェース608は、適切な場合には、1つ以上のI/Oインターフェース608を含んでもよい。本開示は、特定のI/Oインターフェースを記載し、示しているが、本開示は、適切ないかなるI/Oインターフェースを利用することをも意図している。特定の実施形態において、通信インターフェース610は、ハードウエア、ソフトウエア、又はこれらの両方を含み、コンピュータシステム600と、1つ以上の他のコンピュータシステム600又は1つ以上のネットワークとの間の通信例えば、パケットベースの通信のための1つ以上のインターフェースを提供する。限定ではなく、例示として、通信インターフェース610は、イーサーネット又は他の有線ネットワークによる通信のための、ネットワークインターフェースコントロールユニットNIC又はネットワークアダプタ、又は、WI-FIネトワークなどのワイヤレスネットワークによる通信のための、ワイヤレスNICWNIC又はワイヤレスアダプタを含んでもよい。本開示は、適切ないかなるネットワーク、及びこのための適切ないかなる通信インターフェースをも用いることを意図している。限定ではなく、例示として、コンピュータシステム600は、アドホックネットワーク、パーソナルエリアネットワークPAN、ローカルエリアネットワークLAN、ワイドエリアネットワークWAN、メトロポリタンエリアネットワークMAN、又はインターネットの1つ以上の部分、または、これらの複数の組合せと通信する。1つ以上のこれらのネットワークの1つ以上の部分は、有線又は無線であってもよい。例示として、コンピュータシステム600は、ワイヤレスPANWPAN例えば、ブルートゥースWPAN、WI-FIネットワーク、WI-MAXネットワーク、セルラーフォンネットワーク例えばGSMGlobalSystemforMobileCommunicationsネットワーク、又は他の適切なワイヤレスネットワーク、又は複数のこれらの組合せと通信する。適切な場合には、コンピュータシステム600は、いかなるこれらのネットワークに対しても適切な、いかなる通信インターフェース610を含んでもよい。通信インターフェース610は、適切な場合には、1つ以上の通信インターフェース610を含んでもよい。本開示は、特定の通信インターフェースを記載し、示しているが、本開示は、適切ないかなる通信インターフェースをも利用することを意図している。特定の実施形態において、バス612はハードウエア、ソフトウエア、又はこれらの両方を含み、コンピュータシステム600のコンポーネント相互間を接続する。限定ではなく、例示として、バス612は、AGPAcceleratedGraphicsPortバス、又はその他のグラフィックバス、EISAEnhancedIndustryStandardArchitectureバス、FSBfront-sidebus、ハイパートランスポートHTインターコネクト、ISAIndustryStandardArchitectureバス、インフィニバンドインターコネクト、LPClow-pin-countバス、メモリバス、MCAMicroChannelArchitectureバス、PCIPeripheralComponentInterconnectバス、PCI-ExpressPCI-Xバス、SATAserialadvancedtechnologyattachmentバス、VLBVideoElectronicsStandardsAssociationlocalバス、その他適切なバス、又は複数のこれらの組合せを含んでもよい。バス612は、適切な場合には、1つ以上のバス612を含んでもよい。本開示は、特定のバスを記載し、示しているが、本開示は、適切ないかなるバス又は内部接続をも利用することを意図している。本明細書において、コンピュータ可読の記憶媒体は、1つ以上の実体のあるコンピュータ可読の構造を有する記憶媒体を包含する。限定ではなく、例示として、コンピュータ可読の記憶媒体は、半導体ベース又は他の集積回路IC例えば、FPGAfield-programmablegatearray又はASICapplication-specificIC、ハードディスク、HDD、ハイブリッドハードドライブHHD、光ディスク、光ディスクドライブODD、磁気光ディスク、光磁気ドライブ、フロッピディスク、フロッピーディスクドライブFDD、磁気テープ、ホログラフィック記憶媒体、SSDsolid-statedrive、RAMドライブ、セキュアディジタルカード、セキュアディジタルドライブ、又は適切なコンピュータ可読記憶媒体、又は、適切な場合には複数のこれらの組合せを含んでもよい。本明細書において、コンピュータ可読記憶媒体とは、米国特許法第101条に基づき特許保護適格性のないあらゆる媒体を除外する。本明細書において、コンピュータ可読記憶媒体は、同101条の基での特許保護の適格性がない限りにおいて、過渡的な形態の信号伝送電気的な伝搬又は電磁気信号そのものを除外する。本開示は、適切ないかなるストレージをもインプリメントする1つ以上のコンピュータ可読記憶媒体を用いることを意図している。特定の実施形態において、コンピュータ可読記憶媒体は、プロセッサ602の1つ以上の部分例えば、1つ以上のレジスタ又はキャッシュ、メモリ604の1つ以上の部分、ストレージ606の1つ以上の部分、又は、適切な場合にはこれらの組合せをインプリメントする。特定の実施形態において、コンピュータ可読記憶媒体は、RAM又はROMをインプリメントする。特定の実施形態において、コンピュータ可読記憶媒体は、揮発性又は不揮発性persistentメモリをインプリメントする。特定の実施形態において、1つ以上のコンピュータ可読記憶媒体は、ソフトウエアを包含する。本明細書において、ソフトウエアとは、1つ以上のアプリケーション、バイトコード、1つ以上のコンピュータプログラム、1つ以上の実行可能ファイル、1つ以上の命令、ロジック、マシンコード、1つ以上のスクリプト、又はソースコード、及びこれらの組合せを包含し得る。特定の実施形態において、ソフトウエアは、1つ以上のアプリケーションプログラミングインターフェースAPIを含む。本開示は、適切ないかなる記述されたソフトウエア、又は、適切ないかなるプログラミング言語又はプログラミング言語の組合せによって表現されたソフトウエアをも用いることを意図している。特定の実施形態において、ソフトウエアは、ソースコード又はオブジェクトコードとして表現される。特定の実施形態において、ソフトウエアは、例えば、C、Perl、又はこれらの適切な表現としての、ハイレベルプログラミング言語によって記述される。特定の実施形態においては、アセンブラ言語又はマシンコードなどのローレベルプログラミング言語によって記述される。特定の実施形態において、ソフトウエアは、JAVAによって表現される。特定の実施形態において、ソフトウエアは、HTML、XML、又は他の適切なマークアップ言語によって、表現される。本開示は、当業者が理解できる本明細書の実施形態の例に対する、全ての変更、置換、バリエーション、変更、及び修正を包含する。同様に、適切な場合には、添付の請求の範囲は、当業者が理解できる本明細書の実施形態の例に対する、全ての変更、置換、バリエーション、変更、及び修正を包含する。以上の実施形態に関し、更に以下の付記を開示する。付記1ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;を有する方法。付記2前記入力検証コードは、クライアント側の検証コードを含む、付記1記載の方法。付記3前記インターラクティブフォームのための前記コードは、JavaScriptコードを含む、付記1記載の方法。付記4前記少なくとも1つの制約を抽出する工程は:前記インターラクティブフォームのための前記コードを、フォームデータの送信に関連するステートメントを求めてサーチする工程と;前記少なくとも1つの制約を収集するために、前記ステートメントから逆方向に前記コードを移動する工程と;を有する付記1記載の方法。付記5前記少なくとも1つの制約を抽出する工程は、最も弱い前提条件を適用する前記入力検証コードの記号解析に基づいている、付記1記載の方法。付記6前記見いだす工程は、シンボリックストリングソルバを用いて、前記文字列の値を見いだす工程を含む、付記1記載の方法。付記7前記少なくとも1つの制約は、前記シンボリックストリングソルバのオートマトンとして利用される、付記6記載の方法。付記8前記少なくとも1つの制約に対する第1のオートマトンを構成する工程と;前記少なくとも1つの制約の意図に基づいて、第2のオートマトンを構成する工程と;前記少なくとも1つの制約が前記意図をインプリメントしているか否かを確認するために、前記第1のオートマトンと、前記第2のオートマトンとを比較する工程と;を更に有する、付記1記載の方法。付記9前記文字列の値を見いだす工程は、1つ以上の制約の少なくとも1つの制約に不適合となるように、前記文字列の値を生成する工程を含み、当該方法は、サーバが前記1つ以上の制約をインプリメントしているか否かを確認するために、前記文字列の値を前記サーバに通信する工程、を更に有する、付記1記載の方法。付記10パラメータ化されたアタックベクトルを提供する工程であって、前記パラメータ化されたアタックベクトルは、アタックをシミュレートするパラメータ化された文字列を含み、かつ、前記文字列の値を見いだす工程は、文字列の値が1つ以上の制約を満足し、かつ、前記パラメータ化された文字列の条件を満足するよう、文字列の値を生成する工程を含む、パラメータ化されたアタックベクトルを提供する工程と;前記文字列の値の送信が前記ウェブアプリケーションによって許されているか否かを確認する工程と;を更に有する、付記1記載の方法。付記11ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;をコンピュータに実行させるプログラム。付記12前記入力検証コードは、クライアント側の検証コードを含む、付記11記載のプログラム。付記13前記インターラクティブフォームのための前記コードは、JavaScriptコードを含む、付記11記載のプログラム。付記14前記少なくとも1つの制約を抽出する工程は:前記インターラクティブフォームのための前記コードを、フォームデータの送信に関連するステートメントを求めてサーチする工程と;前記少なくとも1つの制約を収集するために、前記ステートメントから逆方向に前記コードを移動する工程と;を有する付記11記載のプログラム。付記15前記少なくとも1つの制約を抽出する工程は、最も弱い前提条件を適用する前記入力検証コードの記号解析に基づいている、付記11記載のプログラム。付記16前記見いだす工程は、シンボリックストリングソルバを用いて、前記文字列の値を見いだす工程を含む、付記11記載のプログラム。付記17前記少なくとも1つの制約は、前記シンボリックストリングソルバのオートマトンとして利用される、付記16記載のプログラム。付記18前記少なくとも1つの制約に対する第1のオートマトンを構成する工程と;前記少なくとも1つの制約の意図に基づいて、第2のオートマトンを構成する工程と;前記少なくとも1つの制約が前記意図をインプリメントしているか否かを確認するために、前記第1のオートマトンと、前記第2のオートマトンとを比較する工程と;を更にコンピュータに実行させる付記11記載のプログラム。付記19前記文字列の値を見いだす工程は、1つ以上の制約の少なくとも1つの制約に不適合となるように、前記文字列の値を生成する工程を含み、当該プログラムは、サーバが前記1つ以上の制約をインプリメントしているか否かを確認するために、前記文字列の値を前記サーバに通信する工程、を更にコンピュータに実行させる付記11記載のプログラム。付記20パラメータ化されたアタックベクトルを提供する工程であって、前記パラメータ化されたアタックベクトルは、アタックをシミュレートするパラメータ化された文字列を含み、かつ、前記文字列の値を見いだす工程は、文字列の値が1つ以上の制約を満足し、かつ、前記パラメータ化された文字列の条件を満足するよう、文字列の値を生成する工程を含む、パラメータ化されたアタックベクトルを提供する工程と;前記文字列の値の送信が前記ウェブアプリケーションによって許されているか否かを確認する工程と;を更にコンピュータに実行させる付記11記載のプログラム。"