図面 (/)

技術 ウェブアプリケーションのフォームの自動テストのための方法及びプログラム

出願人 富士通株式会社
発明者 ムルティー・プラヴィーンクマールサン・フランキプラサド・ムクルラジャンラジャン・スリーランガピー
出願日 2011年7月6日 (9年4ヶ月経過) 出願番号 2011-150168
公開日 2012年1月26日 (8年10ヶ月経過) 公開番号 2012-018676
状態 特許登録済
技術分野 デバッグ/監視
主要キーワード オートマタ ディジタルカード 入力制約 入力検証 検証条件 ワイヤレスLAN ワイヤレスアダプタ ノートブックコンピュータシステム
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2012年1月26日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (8)

課題

解決手段

ユーザによるデータ入力のためのフィールドを含むインターラクティブフォームを有するウェブアプリケーションの特定のページアクセスし(502)、前記インターラクティブフォームのためのコードから、入力検証コードを抽出し(504)、前記入検証コード分析に基づいて、入力データに対する制約を抽出し(506)、前記制約に基づいて、テストデータ自動生成し(508)、前記インターラクティブフォームのフィールドに、前記生成したテストデータの値を自動的に入力して、前記ウェブアプリケーションに送信する(510)。

概要

背景

高度な要求を伴うコンピュータベースアプリケーション、そして特に、ワールドワイドウェブに関連する利用のために設計されたウェブアプリケーションにおいては、品質担保する手続重要性がますます高まってきている。アプリケーション、及び特にウェブアプリケーションは、テストを行うのに困難を伴う。なぜなら、アプリケーションのインターフェースによって許される、可能な全てのユーザ入力が、非常に膨大だからである。以前から知られているウェブアプリケーションの検証方法は、例えば、スクリーン、ボタンリンク、及びフォームフィールドなどのアーティファクト(artifact)の基となるアプリケーションを直接的に参照することにより、ウェブアプリケーションのアーティファクトのチェックを指示する。これは、一般に、そのウェブアプリケーションの背景インプリメンテーションについてのある程度の知識を必要とする。これに対して、システムレベルエンド・ツー・エンド)のウェブアプリケーションテストエンジニアであって、ウェブアプリケーションの基となるインプリメンテーションの知識のないエンジニアは、典型的には、マニュアル操作で、ウェブアプリケーションのユースケーステストシナリオを行うこととなる。一つ一つ、導入されたウェブアプリケーションに表示されたアーティファクトを目で見ながら、そして、このアーティファクトを用いてイベントを実行させる。例としては、アーティファクトによるイベントの実行は、クリックが含まれ得る。例えば、マウス又は他のデバイスを用いて、ボタン及びリンクをオンすること、あるいは、ユーザインターフェースに表示されたフォームにデータを入力することである。このようなウェブブラウザは、ウェブアプリケーションに描画されたインスタンスを表示する。最近の進歩は、マニュアル操作での(ボタン、リンク、及びフォームを含む)テストの必要性を克服するものである。

概要

ウェブアプリケーションのインターラクティブフォームに関するテストを自動化する。ユーザによるデータ入力のためのフィールドを含むインターラクティブフォームを有するウェブアプリケーションの特定のページアクセスし(502)、前記インターラクティブフォームのためのコードから、入力検証コードを抽出し(504)、前記入検証コード分析に基づいて、入力データに対する制約を抽出し(506)、前記制約に基づいて、テストデータ自動生成し(508)、前記インターラクティブフォームのフィールドに、前記生成したテストデータの値を自動的に入力して、前記ウェブアプリケーションに送信する(510)。

目的

例えば、マウス又は他のデバイスを用いて、ボタン及びリンクをオンすること、あるいは、ユーザインターフェースに表示されたフォームにデータを入力することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項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つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;をコンピュータに実行させるプログラム

技術分野

0001

本開示は、ウェブアプリケーションを検証することに関する。

背景技術

0002

高度な要求を伴うコンピュータベースアプリケーション、そして特に、ワールドワイドウェブに関連する利用のために設計されたウェブアプリケーションにおいては、品質担保する手続重要性がますます高まってきている。アプリケーション、及び特にウェブアプリケーションは、テストを行うのに困難を伴う。なぜなら、アプリケーションのインターフェースによって許される、可能な全てのユーザ入力が、非常に膨大だからである。以前から知られているウェブアプリケーションの検証方法は、例えば、スクリーン、ボタンリンク、及びフォームフィールドなどのアーティファクト(artifact)の基となるアプリケーションを直接的に参照することにより、ウェブアプリケーションのアーティファクトのチェックを指示する。これは、一般に、そのウェブアプリケーションの背景インプリメンテーションについてのある程度の知識を必要とする。これに対して、システムレベルエンド・ツー・エンド)のウェブアプリケーションテストエンジニアであって、ウェブアプリケーションの基となるインプリメンテーションの知識のないエンジニアは、典型的には、マニュアル操作で、ウェブアプリケーションのユースケーステストシナリオを行うこととなる。一つ一つ、導入されたウェブアプリケーションに表示されたアーティファクトを目で見ながら、そして、このアーティファクトを用いてイベントを実行させる。例としては、アーティファクトによるイベントの実行は、クリックが含まれ得る。例えば、マウス又は他のデバイスを用いて、ボタン及びリンクをオンすること、あるいは、ユーザインターフェースに表示されたフォームにデータを入力することである。このようなウェブブラウザは、ウェブアプリケーションに描画されたインスタンスを表示する。最近の進歩は、マニュアル操作での(ボタン、リンク、及びフォームを含む)テストの必要性を克服するものである。

発明が解決しようとする課題

0003

しかしながら、ウェブアプリケーションのフォームに関するアプリケーションの自動的なテストの課題は、複雑さが増加しているということである。これは、ウェブアプリケーションには、複雑な入力検証コードが存在し、入力されたデータをチェックし、それが特定の制約適合しているかを確認するという事実があるからである。従来の自動的なテストは、このような制約を考慮しておらず、そのため、テストの範囲は限られたものとなる。ユーザーネームの制約の例を挙げれば、ユーザーネームは、6から15文字の長さであり、英数字以外の文字を含んではならず、少なくとも1つの大文字、及び少なくとも1つの数字がなければならないというものである。

課題を解決するための手段

0004

本方法の一観点によれば、ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;を有する方法が提供される。

図面の簡単な説明

0005

本開示に従った、ウェブアプリケーションを検証するための実施形態のシステムの例示的環境を例示した図である。
本開示に従った、インターラクティブなフォームの例を含むウェブブラウザ表示を例示した図である。
本開示に従った、フィールド入力を検証するためのコードセグメントを例示した図である。
本開示に従った、ウェブアプリケーションを検証するためのシステムを例示した図である。
本開示に従った、ウェブアプリケーションを検証するための方法のフローチャートを例示した図である。
図3に示した入力検証コードから抽出されたユーザーネームのための制約を例示する図である。
本開示に従った、コンピュータシステムを例示した図である。

0006

特定の実施形態は、ウェブアプリケーション、特にWeb2.0アプリケーションの検証に関連している。Web2.0アプリケーションは、一般的に動的又はインターラクティブウェブアプリケーションと呼ばれている。このウェブアプリケーションは、サーバとの間で非同期コミュニケーションメカニズムを使用している。これによって、全てのページ及び情報は、リロードしたり毎回通信したりする必要はない。これは、ワールドワイドウェブ又は他の適切なネットワーク環境を介した、インターラクティブな情報共有インターオペラビリティユーザ中心デザイン、あるいはコラボレーションを容易にする。ウェブアプリケーション、及び特にウェブ2.0アプリケーションは、しばしば、ブラウザウィンドウ内に、複数のウィジェット(widgets)を形成し、利用しており、すなわち、これを特徴としている。ウィジェットは、一般的には、スタンドアロンのアプリケーション又はコードのポータブルチャンクである。これは、例えばハイパーテキストマークアップランゲージHTML)ベースウェブページのような、構造化された独立に描画され得るドキュメント内インストールされ、かつ実行され得る。あるいは、これは、サードパーティのサイトにユーザによって埋め込まれ、このユーザが著作権を有する(例えば、ウェブページ、ブログ、又はソーシャルメディアサイトのプロフィールが挙げられる)。ウェブ2.0アプリケーションの例は、ウェブベースコミュニティホステッドサービスソーシャルネットワークサイト、ビデオシェアリングサイト、又はWiki等と協働して動作してもよい。

0007

特定の実施形態は、ウェブアプリケーションのフォームフィールドのための入力検証コードの自動的な抽出、静的解析技術を利用した入力検証コードの解析、フィールド変数満足すべき制約の抽出、制約を満足する各フィールドの値を見いだすシンボリックストリングソルバ(symbolic string solver)の利用、及び、入力制約を満足する文字列をフィールドに入力することに関連する。

0008

図1は、検証システム102の実施形態の環境100の例を示している。検証システム102は、1つ以上のハードウエアコンポーネント、1つ以上のソフトウエアコンポーネント、又はハードウエア及びソフトウエアコンポーネントの組合せを含んでいる。検証システム102は、1つ以上のコンピュータシステム内で実行される。コンピュータシステムについては、図7を用いて詳述する。検証システム102は、ウェブアプリケーション104にアクセするよう構成されている。特定の実施形態においては、ウェブアプリケーション104は、少なくともその一部が、検証システム102のコンピュータシステムに配置されている。別の実施形態においては、ウェブアプリケーション104は、1つ以上の異なるコンピュータシステムに配置されてもよい。これらのコンピュータシステムは、検証システム102をホスティングするコンピュータシステムに直接、又は、間接的に接続されている。ウェブアプリケーション104は、その少なくとも一部が、1つ以上のサードパーティのサーバ又はコンピュータシステムによってホスティングされてもよい。

0009

一般的に、ウェブアプリケーションは、ウェブブラウザ(例えば、MICROSOFT WINDOWS(登録商標) INTERNET EXPLORER,MOZILLA FIREFOX,APPLE SAFRI,GOOGLECHROME,又はOPERA)、あるいは、その他のクライアントアプリケーションを介して、ネットワーク上でアクセスされ得る。あるいは、ウェブブラウザをサポートする言語によってコーディングされたコンピュータソフトウエアアプリケーション(場合によっては、このアプリケーションを実行させるためにウェブブラウザの助けを借りる)によってアクセスされ得る。ウェブアプリケーションは、広く普及している。この理由は、ウェブブラウザに偏在性(ubiquity)があること、リモートコンピューティングディバイスクライアントシンクライアント:thin clientとしばしば呼ばれる)として導入(ランチ:launch)されたウェブブラウザの利便性があること、そして、ウェブアプリケーションをアップデート及び維持するためにリモートクライアントソフトウエア配布しインストールする必要がないという付随した能力があることの結果である。ウェブアプリケーションをインプリメントするためには、ウェブアプリケーションは、しばしば、関連するウエッブサイトバックエンドサーバに提供されている1つ以上のリソースにアクセスすることを必要とする。加えて、ウェブアプリケーションは、しばしば、他のアプリケーションに関連する追加的なリソースにアクセスすることを必要とする。

0010

エンドユーザマシンクライアントデバイス)上に配置されたウェブアプリケーションは、エンドユーザのマシンのディスプレイにウェブページを描画させる。ウェブブラウザと共に、あるいはこれと関連して実行されるウェブアプリケーションは、ウェブブラウザに対して、ディスプレイにウェブページを描画させる。ウェブアプリケーションのウェブページは、典型的に、ウェブアプリケーションの他のウェブページへの埋め込まれたリンクを含む。リンクは、これに加えて、このウェブアプリケーション以外の、あるいはこれと関連しないウェブページ及びウェブサイトへのリンクを含む。動的ウェブアプリケーションは、特に、しばしば、複数の埋め込まれたリンクを含む。このリンクは、現在表示しているウェブページに、ハイパーリンクアイコン、又はその他のクリッカブルな特徴として描画され得る。典型的な動的ウェブアプリケーションは、このウェブアプリケーションをホスティングしているサーバに存在する複数のリソース、あるいは外部のサードパーティのサーバから取り出される複数のリソースを含む。ウェブページ又はウェブページを描画するリソースは、それ自身、複数の埋め込まれたリソースを含んでおり、データレコードを含んでもよい。データレコードとしては、例えば、テキスト情報コンテンツ、又は更に複雑なデジタルエンコードされたマルチメディアコンテンツ、例えばソフトエアプログラム、又は他のオブジェクトグラフィックスイメージオーディオ信号、ビデオ等が挙げられる。ウェブページを作成する1つの主要なマークアップランゲージとしては、ハイパーテキストマークアップランゲージ(HTML)が挙げられる。その他、ウェブブラウザをサポートする言語及び技術としては、XML(Extensible Markup Language)、XHTML(Extensible Hypertext Markup Language)、Java(登録商標)Script、CSS(Cascading Style Sheet)、JAVA(登録商標)等がある。例えば、HTMLによって、アプリケーション又はウェブページデベロッパは、構造的ドキュメントを作ることができる。これは、テキスト及びリンク、並びにページ内に埋め込まれ得るイメージ、ウェブアプリケーション及び他のオブジェクト(例えば、フォームフィールド)のための構造的セマンティックス記述することによってなされる。一般的に、ウェブページは、静的構造ドキュメントとしてクライアントに届けられる。しかしながら、ページに埋め込まれたウェブエレメント(例えば、実行可能なJavaScriptコードセグメント)を使用することによって、ページ又は一連のページによってインターラクティブな体験が得られる。クライアントデバイスにおけるユーザセッションにおいて、ウェブブラウザは、ウェブアプリケーション又はウェブページをホスティングするウェブサイトから受信され、又は検索されたページ及び関連するリソース、並びに他のウェブサイトからの潜在的なリソースを解釈し表示する。例えば、ウェブブラウザによって構造化されたドキュメントHTMLが受信されると、このウェブブラウザは、JavaScriptコードセグメントを含む、埋め込まれたコールを実行する、その後、サードパーティホスト又はウェブサイトからリソースをコールし、又はリクエストする。

0011

特定の実施形態においては、検証システム102は、ウェブアプリケーション104を、ネットワークを介してアクセスする。ネットワークとしては、インターネットエクストラネットバーチャルプライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイドエリアネットワークWAN)、メトロポリタンエリアネットワークMAN)、ワールドワイドウェブの一部(インターネット)、又はその他のネットワーク又はこれらの複数のネットワークの組合せが挙げられる。本開示は、いかなる適切なネットワークをも利用できる。これを介して、ウェブアプリケーション104は、検証システム102と協働して動作する。特定の実施形態においては、検証システム102は、ウェブアプリケーション104をホスティングしている1つ以上のサーバとセッションを開始する。これは、検証システムが、ウェブアプリケーション104のために、これらのホスティングサーバに対して、例えばHTTPリクエストの形態で、リクエストを送信することによって行われる。特定の実施形態においては、このリクエストを受信すると、ウェブアプリケーション104をホスティングしているサーバは、HTML又は構造的ドキュメントの形で、ウェブアプリケーション104の描画可能なインプリメンテーションを生成する。この構造的ドキュメントには、検証システム102によってウェブページを描画するための、構造的ドキュメントコード、及び表示されるべきコンテンツばかりでなくあらゆる埋め込まれたリソース又は埋め込まれたコール及びリソースの識別子が含まれる。

0012

しばしば、ウェブブラウザは、インターラクティブなフォームの表示に関連するJavaScriptコードセグメント(又は他の適切なコード)を読み込み、かつ、このコードセグメントに基づき、インターラクティブなフォームフィールドを描画し表示し得る。ウェブブラウザのウィンドウに表示されたこのインターラクティブフォームが、図2に示されている。図2に示すように、ウェブブラウザウィンドウ200は、静的な文字列202、フィールド204、及び送信ボタン206を含むフォームを表示してもよい。静的な文字列202は、ウェブブラウザのユーザに対して、ユーザが、隣接するフィールド204に入力すべきデータのタイプを示す。各フィールド204は、ユーザインターフェース要素であり、ウェブブラウザのユーザが、(例えば、キーボードを利用して)そのフィールドにデータを入力することを可能とする。データフィールドにデータを入力した後、ユーザは、送信ボタン206をクリックし(又は、ユーザによるデータの送信の要求を示す他のアクションを実行し)、そして、ウェブブラウザは、その後、サーバ(例えば、ウェブアプリケーションをホスティングしているサーバ)に対してこのデータを送信する。ある例では、インターラクティブなフォームコードは、クライアント側の検証コードを含んでもよい。このコードはフィールド204に入力されたデータの制約を規定する。例えば、制約は、ユーザーネームに関連するフィールドの最小の長さ及び最大の長さの制限、及び/又はこのフィールドに入力できる文字のタイプの制限を規定してもよい。他の例においては、郵便番号に関連するフィールドは、5桁の数字の値に制限してもよい。ユーザネームフィールドに対するクライアント側の検証コードが、図3に示されている。図3のコードの例では、ユーザーネームの長さの制約が、5から15文字の間、そして、ユーザーネームの文字の制約として、アルファベット(letter)、数字、及びアンダースコア以外を排除する。

0013

特定の実施形態において、検証システム102は、ウェブアプリケーション104を検証するために使用するユーザレベル検証条件106にアクセスする。特定の実施形態においては、ユーザレベル検証条件106は、これらのウェブアーティファクトのインプリメンテーションのレベルにおける詳細な制約ではなく、ウェブアプリケーションの様々なウェブアーティファクトに対する自然な言語基準を含む。特定の実施形態では、検証条件106は、ウェブアプリケーション104のベストケースであってもよい。テストケースは、ウェブアプリケーションの実行の特定のシナリオを含んでもよい。例えば、ユーザによって実行される特定のシーケンスのステップ、あるいは、何が、このシナリオにおいて、ウェブアプリケーションの正しい、又は、正当な動作(behavior)であるかの明示的な又は暗黙の規定を含んでもよい。単純に、テストケースは、正しさのチェックと組み合わされたユースケースと捉えてもよい。他の実施形態において、検証条件106は、ウェブアプリケーション104の予想される動作の、より明確な(expressive)表現であってもよい。そして、数学的表現形式(formalism)、例えば時間的論理(temporal logic)で記述されてもよい。検証結果108は、ウェブアプリケーション104の1つ以上の検証条件106又は他のテスト又はユースケースの検証の結果としての検証システム102の出力である。

0014

図4に更に詳細に示すように、検証システム102は、ガイダンスエンジン210、ウェブアプリケーションクローラ(crawler)212、条件ジェネレータ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を生成する。

0015

図5は、検証システム102により、自動的に、ウェブアプリケーション104のインターラクティブフォームに値を入力する実施形態のモデル500のフローチャートを示している。方法500は、一般的に、ウェブアプリケーションクローラ212がウェブアプリケーション104にアクセスする502から開始する。ウェブアプリケーションクローラ212は、コード(JavaScript,HTML等)を読み込むことにより、ウェブアプリケーション104にアクセスする。ステップ504で、クローラ212が、インターラクティブフォームを表示するウェブアプリケーション104の特定のページをアクセスすると、クローラ212は、そのウェブアプリケーション104から入力検証コード(例えば、図3に示したクライアント側の検証コード)を抽出する。

0016

ステップ504と並行して又はその後に、方法500は、ステップ506に進む。このステップでは、クローラ212は、抽出した入力検証コードを分析し、様々なフォームフィールドの制約を抽出する。クローラ212は、逆方向静的分析(“backwards” static analysis)を実行することによって、制約を抽出する。この分析によって、フォームデータの送信(submission)(例えば、「form submit」ステートメント、「on−click」ステートメント等)に関連するコードのステートメントから分析を開始する。そして、逆方向にコードを移動し、フォームデータを成功裏転送するために満足すべき、各々の変数のための制約を収集する。入力検証コードは、入力検証コードの制御フローグラフの構成に基づいてもよい。あるいは、または、これに加えて、抽出は、制約を満足する最大のセットの動作(behavior)を提供するために、最も弱い前提条件を持つコードの記号解析(symbolic analysis)に基づいてもよい。図6は、図3に示す入力検証コードから抽出されたユーザーネームのための制約の例を示している。

0017

ステップ504及び506と並行して又はその後に、方法500は、ステップ508に移る。ここで、クローラ212は、抽出された制約を満足する文字列の値を生成する。ある実施形態において、クローラ212は、抽出された制約を満足する文字列(ストリング)の値を生成するために、シンボリックストリングソルバを含んでもよい。このような実施形態において、このストリングソルバは、抽出された制約をそのソルバのオートマタ(automata)として使用する。

0018

ステップ504、506及び508と並行して又はその後に、方法500は、ステップ510に移行する。ここで、クローラ212は、自動的にこの生成された文字列の値をウェブアプリケーション104のインターラクティブフォームの適切なフィールドに入力し、そして、フォームを送る。

0019

都合よく、上述の方法及びシステムは、ウェブアプリケーションの検証システムに対して自動的にフォームデータを入力できるようにする。従って、適合したフォームデータの入力のための人間の介在の必要性を排除する。加えて、上述の方法及びシステムは、後述するユースケースを含む様々なアプリケーションを含んでいる。なお、これに限定されるものではない。

0020

例えば、フォームデータが送信されるサーバが、クライアント側の検証コードと同じチェックをインプリメントすることを確保するために、上述の方法及びシステムが利用される。このような一貫性の検証は、クライアント側の検証をディスエーブルすることにより(例えば、Javascript 又はJavascriptベースのフォームをディスエーブルすることにより、ハイパーテキスト転送プロトコルリクエストを直接サーバに送るよう構成されたプログラムを利用することなどによって)実行される。そして、入力検証条件をパスするかあるいは入力条件を満たさない(violate)データをサーバに送る。クローラ212のこのストリングソルバは、1つ以上の制約を無視することにより検証制約を満たさないデータを提供してもよい(例えば、制約が文字の長さを5から15文字であると要求する場合、このストリングソルバは、この制約を破る(制約に不適合の)データを提供するために、5文字よりも少ない文字列、及び/又は、15文字を超える文字列を生成してもよい)。

0021

他の実施形態として、上述の方法及びシステムは、サーバに対するアタックシミュレートに利用されてもよい。例を示すと、アタックベクトルがストリングソルバの制約として指定され、これによって、ストリングソルバは、アタックをシミュレートするフォームフィールドに自動的に入力される文字列を生成する。このようなアタックベクトルは、静的文字列(例えば、“script>alert()</script>”)又はパラメータ化された、以下の文字列である。例えば:
“”
このような、パラメータ化されたアタックは、可変長のアタックベクトルであり、他の点では、フィールドの他の制約を満たす(例えば、文字列長、許された文字、等)。したがって、アタックベクトルは、他のフィールド入力制約によって却下されるようなアタックをランダム試みるのではなく、アタックがクライアント側のウェブアプリケーションによって受け入れられ得るフィールドにターゲットを当てたものであり、例えば、ユーザネームフィールドの制約は、いずれのアタックも許すことはないであろう。したがって、このようなフィールドは、ランダムにアタックを試みる意味はないであろう。他の利点としては、アタックが構成されるべきサーチスペースが狭まることである。

0022

更に他の実施形態としては、上述の方法及びシステムは、入力検証コードの意図(intent)がインプリメントされているか否かをチェックするために用いられてもよい。実例を示すと、入力検証コードのための意図の指定がある場合、検証システム102は、入力検証コードが実際に意図した目的(object)を達成したかが確認されてもよい。特定の例として、入力検証コードが、URL(uniform resource locator)内に「chat.com」のみを許容すると仮定する。更に、インプリメントされている場合、この入力検証コードが、URL内の「chat」の文字をチェックするのみである場合を仮定する。すなわち、「evilchat」は制約をパスし、かつサーバと通信することを許されると仮定する。このような、入力検証コードから抽出された変数のための制約オートマトンを構成し、意図した特徴(property)のためのオートマトンを構成し、かつ、これらのオートマタが同じであるかを比較することによって、インプリメンテーションと意図との間の不整合が検知され得る。このオートマタが同じであれば、その検証コードは意図した目的を達成しているということになる。

0023

図7は、コンピュータシステム600の例を示している。特定の実施例において、1つ以上のコンピュータシステム600が、本明細書に記載され又は示された1つ以上の方法の1つ以上のステップを実行する。特定の実施形態において、1つ以上のコンピュータシステム600が、本明細書に記載され又は示された機能を提供する。特定の実施形態において、1つ以上のコンピュータシステム600上で動作するソフトウエアは、本明細書に記載され又は示された1つ以上の方法の1つ以上のステップを実行し、あるいは、本明細書に記載され又は示された機能を提供する。特定の実施形態は、1つ以上のコンピュータシステム600の1つ以上の部分を含む。

0024

本明細書の開示は、いかなる適切な数のコンピュータシステム600をも含み得るよう意図されている。この開示は、いかなる適切な物理的形態をとるコンピュータシステム600をも意図している。限定ではなく、例示として、コンピュータシステム600は、組み込み型コンピュータシステム、システム・オン・チップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータ・オン・モジュール(COM)又はシステム・オン・モジュール(SOM))、デスクトップコンピュータシステム、ラップトップ又はノートブックコンピュータシステム、インターラクティブキオスクメインフレーム、コンピュータシステムのメッシュ携帯電話、PDA(personal digital assistant)、サーバ、又は、これらの複数のあらゆる組合せであってもよい。適切な場合には、コンピュータシステム600は、1つ以上のコンピュータシステム600を含んでもよい。たとえば、一体型の又は分散型のもの、複数のロケーションに分散しているもの、複数のマシンに分散しているもの、又は、1つ以上のネットワーク上の1つ以上のクラウドコンポーネントを含むククラウドに存在しているものが挙げられる。適切な場合には、1つ以上のコンピュータシステム600は、空間上又は時間上の実質的制限なしに、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。限定ではなく、例示として、1つ以上のコンピュータシステム600は、リアルタイム又はバッチモードで、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。1つ以上のコンピュータシステム600は、異なる時刻に又は異なる場所で、適切な場合には、本明細書に記載され又は示されている1つ以上の方法の1つ以上のステップを実行してもよい。

0025

特定の実施形態において、コンピュータシステム600は、プロセッサ602、メモリ604、ストレージ606、入出力(I/O)インターフェース608、通信インターフェース610、及びバス612を含む。本開示は、特定の配置で特定の数のコンポーネントを有する特定のコンピュータシステムを記載しているが、この開示は、適切ないかなる配置でも、適切ないかなる数の適切ないかなるコンポーネントを有する、適切ないかなるコンピュータシステムをも意図している。

0026

特定の実施形態において、プロセッサ602は、コンピュータシステムを作り上げるための、命令を実行するハードウエアを含む。限定ではなく、例示として、プロセッサ602は、命令を実行するために、内部レジスタ内部キャッシュ、メモリ604、又はストレージ606から命令を取り出し(フェッチし)、これらをデコードし実行する。そして、その後、内部レジスタ、内部キャッシュ、メモリ604、又はストレージ606に1つ以上の結果を書き込む。特定の実施形態において、プロセッサ602は、データ、命令、又はアドレスのための、1つ以上の内部キャッシュを含んでもよい。本開示では、プロセッサ602は、適切な場合には、適切な数の適切な内部キャッシュを含むことを意図している。限定ではなく、例示として、プロセッサ602は、1つ以上の命令キャッシュ、1つ以上のデータキャッシュ、及び1つ以上のTLB(translation lookaside buffers)を含んでもよい。命令キャッシュ内の命令は、メモリ604又はストレージ606内の命令のコピーであってもよい。そして、この命令キャッシュは、プロセッサ602によるこれらの命令の取り出しをスピードアップし得る。データキャッシュ内のデータは、プロセッサ602がこれによって命令を実行するためのメモリ604又はストレージ606内のデータのコピー、プロセッサ602で実行された以前の命令の結果でありプロセッサ602で後の命令によりアクセスされるか又はメモリ604又はストレージ606に書き込むためのもの、又は他の適切なデータであってもよい。このデータキャッシュは、プロセッサ602による読み書きのスピードアップさせ得る。TLBは、プロセッサ602のための仮想アドレス変換をスピードアップさせる。特定の実施形態において、プロセッサ602は、データ用、命令用、アドレス用の、1つ以上の内部レジスタを含んでもよい。本開示は、適切な場合において、プロセッサ602は、適切ないかなる数の、適切ないかなる内部レジスタを含んでもよい。適切な場合には、プロセッサ602は、1つ以上の論理演算ユニットALU)を含んでもよく、マルチコアプロセッサであってもよく、又は、1つ以上のプロセッサ602を含んでもよい。この開示は、特定のプロセッサを記載し、示しているが、この開示は、適切ないかなるプロセッサをも意図している。

0027

特定の実施例において、メモリ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)又はスタティックRAM(SRAM)であってもよい。更に、適切な場合には、このRAMはシングルポート又はマルチポートRAMであってもよい。本開示は、適切ないかなるRAMであってもよい。メモリ604は、適切な場合には、1つ以上のメモリ604を含んでもよい。本開示は、特定のメモリを記載し、かつ示しているが、本開示はいかなる適切なメモリをも利用することを意図している。

0028

特定の実施形態において、ストレージ606は、データ又は命令のためのマスストレージを含む。限定ではなく、例示として、ストレージ606は、HDDフロッピー(登録商標)ディスクドライブフラッシュメモリ光ディスク磁気光ディスク、磁気テープ、又はUSBドライブ、又は、これら複数の組合せを含んでもよい。ストレージ606は、適切な場合には、リムーバブル又は、リムーバブルでない(固定)媒体を含んでもよい。ストレージ606は、適切な状況に応じて、コンピュータシステム600の内部又は外部にあってもよい。特定の実施形態において、ストレージ606は、不揮発性ソリッドステートメモリであってもよい。特定の実施形態において、ストレージ606は、リードオンリメモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムされたROM、プログラマブルROMPROM)、消去可能型PROM(EPROM)、又はフラッシュメモリ、又はこれら複数の組合せであってもよい。この開示は、マスストレージ606が、適切ないかなる物理的形態をとっていてもよい。ストレージ606は、プロセッサ602とストレージ606との間の通信を容易化するために、適切な1つ以上のストレージコントロールユニットを含んでもよい。適切な場合には、ストレージ606は、1つ以上のストレージ606を含んでもよい。本開示は、特定のストレージを記載し、示したが、この開示は、適切ないかなるストレージを用いることも意図している。

0029

特定の実施形態において、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インターフェースを利用することをも意図している。

0030

特定の実施形態において、通信インターフェース610は、ハードウエア、ソフトウエア、又はこれらの両方を含み、コンピュータシステム600と、1つ以上の他のコンピュータシステム600又は1つ以上のネットワークとの間の通信(例えば、パケットベースの通信)のための1つ以上のインターフェースを提供する。限定ではなく、例示として、通信インターフェース610は、イーサーネット又は他の有線ネットワークによる通信のための、ネットワークインターフェースコントロールユニット(NIC)又はネットワークアダプタ、又は、WI−FIネトワークなどのワイヤレスネットワークによる通信のための、ワイヤレスNIC(WNIC)又はワイヤレスアダプタを含んでもよい。本開示は、適切ないかなるネットワーク、及びこのための適切ないかなる通信インターフェースをも用いることを意図している。限定ではなく、例示として、コンピュータシステム600は、アドホックネットワークパーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、又はインターネットの1つ以上の部分、または、これらの複数の組合せと通信する。1つ以上のこれらのネットワークの1つ以上の部分は、有線又は無線であってもよい。例示として、コンピュータシステム600は、ワイヤレスPAN(WPAN)(例えば、ブルートゥースWPAN)、WI−FIネットワーク、WI−MAXネットワーク、セルラーフォンネットワーク(例えばGSM(Global System for Mobile Communications)ネットワーク、又は他の適切なワイヤレスネットワーク、又は複数のこれらの組合せと通信する。適切な場合には、コンピュータシステム600は、いかなるこれらのネットワークに対しても適切な、いかなる通信インターフェース610を含んでもよい。通信インターフェース610は、適切な場合には、1つ以上の通信インターフェース610を含んでもよい。本開示は、特定の通信インターフェースを記載し、示しているが、本開示は、適切ないかなる通信インターフェースをも利用することを意図している。

0031

特定の実施形態において、バス612はハードウエア、ソフトウエア、又はこれらの両方を含み、コンピュータシステム600のコンポーネント相互間を接続する。限定ではなく、例示として、バス612は、AGP(Accelerated Graphics Port)バス、又はその他のグラフィックバスEISA(Enhanced Industry Standard Architecture)バス、FSB(front−side bus)、ハイパートランスポート(HT)インターコネクトISA(Industry Standard Architecture)バス、インフィニバンド・インターコネクト、LPC(low−pin−count)バス、メモリバス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCI−Express(PCI−X)バス、SATA(serial advanced technology attachment)バス、VLB(Video Electronics StandardsAssociation local)バス、その他適切なバス、又は複数のこれらの組合せを含んでもよい。バス612は、適切な場合には、1つ以上のバス612を含んでもよい。本開示は、特定のバスを記載し、示しているが、本開示は、適切ないかなるバス又は内部接続をも利用することを意図している。

0032

本明細書において、コンピュータ可読の記憶媒体は、1つ以上の実体のあるコンピュータ可読の構造を有する記憶媒体を包含する。限定ではなく、例示として、コンピュータ可読の記憶媒体は、半導体ベース又は他の集積回路(IC)(例えば、FPGA(field−programmable gate array)又はASIC(application−specific IC))、ハードディスク、HDD、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブODD)、磁気光ディスク、光磁気ドライブ、フロッピディスクフロッピーディスクドライブFDD)、磁気テープ、ホログラフィック記憶媒体、SSD(solid−state drive)、RAMドライブセキュアディジタルカード、セキュアディジタルドライブ、又は適切なコンピュータ可読記憶媒体、又は、適切な場合には複数のこれらの組合せを含んでもよい。本明細書において、コンピュータ可読記憶媒体とは、米国特許法第101条に基づき特許保護適格性のないあらゆる媒体を除外する。本明細書において、コンピュータ可読記憶媒体は、同101条の基での特許保護の適格性がない限りにおいて、過渡的な形態の信号伝送電気的な伝搬又は電磁気信号そのもの)を除外する。

0033

本開示は、適切ないかなるストレージをもインプリメントする1つ以上のコンピュータ可読記憶媒体を用いることを意図している。特定の実施形態において、コンピュータ可読記憶媒体は、プロセッサ602の1つ以上の部分(例えば、1つ以上のレジスタ又はキャッシュ)、メモリ604の1つ以上の部分、ストレージ606の1つ以上の部分、又は、適切な場合にはこれらの組合せをインプリメントする。特定の実施形態において、コンピュータ可読記憶媒体は、RAM又はROMをインプリメントする。特定の実施形態において、コンピュータ可読記憶媒体は、揮発性又は不揮発性(persistent)メモリをインプリメントする。特定の実施形態において、1つ以上のコンピュータ可読記憶媒体は、ソフトウエアを包含する。本明細書において、ソフトウエアとは、1つ以上のアプリケーション、バイトコード、1つ以上のコンピュータプログラム、1つ以上の実行可能ファイル、1つ以上の命令、ロジックマシンコード、1つ以上のスクリプト、又はソースコード、及びこれらの組合せを包含し得る。特定の実施形態において、ソフトウエアは、1つ以上のアプリケーション・プログラミング・インターフェース(API)を含む。本開示は、適切ないかなる記述されたソフトウエア、又は、適切ないかなるプログラミング言語又はプログラミング言語の組合せによって表現されたソフトウエアをも用いることを意図している。特定の実施形態において、ソフトウエアは、ソースコード又はオブジェクトコードとして表現される。特定の実施形態において、ソフトウエアは、例えば、C、Perl、又はこれらの適切な表現としての、ハイレベルプログラミング言語によって記述される。特定の実施形態においては、アセンブラ言語(又はマシンコード)などのローレベルプログラミング言語によって記述される。特定の実施形態において、ソフトウエアは、JAVAによって表現される。特定の実施形態において、ソフトウエアは、HTML、XML、又は他の適切なマークアップ言語によって、表現される。

0034

本開示は、当業者が理解できる本明細書の実施形態の例に対する、全ての変更、置換バリエーション、変更、及び修正を包含する。同様に、適切な場合には、添付の請求の範囲は、当業者が理解できる本明細書の実施形態の例に対する、全ての変更、置換、バリエーション、変更、及び修正を包含する。

0035

以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;
前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;
前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;
前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;
前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;
前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;
を有する方法。
(付記2)
前記入力検証コードは、クライアント側の検証コードを含む、
付記1記載の方法。
(付記3)
前記インターラクティブフォームのための前記コードは、JavaScriptコードを含む、
付記1記載の方法。
(付記4)
前記少なくとも1つの制約を抽出する工程は:
前記インターラクティブフォームのための前記コードを、フォームデータの送信に関連するステートメントを求めてサーチする工程と;
前記少なくとも1つの制約を収集するために、前記ステートメントから逆方向に前記コードを移動する工程と;
を有する付記1記載の方法。

0036

(付記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記載のプログラム。

実施例

0037

(付記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記載のプログラム。

0038

602プロセッサ
604メモリ
606ストレージ
608 I/Oインターフェース
610通信インターフェース
612 バス

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ