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

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

Info

Publication number
JP2012018676A
JP2012018676A JP2011150168A JP2011150168A JP2012018676A JP 2012018676 A JP2012018676 A JP 2012018676A JP 2011150168 A JP2011150168 A JP 2011150168A JP 2011150168 A JP2011150168 A JP 2011150168A JP 2012018676 A JP2012018676 A JP 2012018676A
Authority
JP
Japan
Prior art keywords
string
constraint
code
value
web application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2011150168A
Other languages
English (en)
Other versions
JP5742521B2 (ja
Inventor
Praveenkumar Multi
クマール ムルティー・プラヴィーン
Frankie San
サン・フランキ
Rajan Prasad Mukul
ラジャン プラサド・ムクル
P Rajan Suriranga
ピー ラジャン・スリーランガ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2012018676A publication Critical patent/JP2012018676A/ja
Application granted granted Critical
Publication of JP5742521B2 publication Critical patent/JP5742521B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

本開示は、ウェブアプリケーションを検証することに関する。
高度な要求を伴うコンピュータベースのアプリケーション、そして特に、ワールドワイドウェブに関連する利用のために設計されたウェブアプリケーションにおいては、品質を担保する手続の重要性がますます高まってきている。アプリケーション、及び特にウェブアプリケーションは、テストを行うのに困難を伴う。なぜなら、アプリケーションのインターフェースによって許される、可能な全てのユーザ入力が、非常に膨大だからである。以前から知られているウェブアプリケーションの検証方法は、例えば、スクリーン、ボタン、リンク、及びフォームフィールドなどのアーティファクト(artifact)の基となるアプリケーションを直接的に参照することにより、ウェブアプリケーションのアーティファクトのチェックを指示する。これは、一般に、そのウェブアプリケーションの背景のインプリメンテーションについてのある程度の知識を必要とする。これに対して、システムレベル(エンド・ツー・エンド)のウェブアプリケーションテストエンジニアであって、ウェブアプリケーションの基となるインプリメンテーションの知識のないエンジニアは、典型的には、マニュアル操作で、ウェブアプリケーションのユースケーステストシナリオを行うこととなる。一つ一つ、導入されたウェブアプリケーションに表示されたアーティファクトを目で見ながら、そして、このアーティファクトを用いてイベントを実行させる。例としては、アーティファクトによるイベントの実行は、クリックが含まれ得る。例えば、マウス又は他のデバイスを用いて、ボタン及びリンクをオンすること、あるいは、ユーザインターフェースに表示されたフォームにデータを入力することである。このようなウェブブラウザは、ウェブアプリケーションに描画されたインスタンスを表示する。最近の進歩は、マニュアル操作での(ボタン、リンク、及びフォームを含む)テストの必要性を克服するものである。
しかしながら、ウェブアプリケーションのフォームに関するアプリケーションの自動的なテストの課題は、複雑さが増加しているということである。これは、ウェブアプリケーションには、複雑な入力検証コードが存在し、入力されたデータをチェックし、それが特定の制約に適合しているかを確認するという事実があるからである。従来の自動的なテストは、このような制約を考慮しておらず、そのため、テストの範囲は限られたものとなる。ユーザーネームの制約の例を挙げれば、ユーザーネームは、6から15文字の長さであり、英数字以外の文字を含んではならず、少なくとも1つの大文字、及び少なくとも1つの数字がなければならないというものである。
本方法の一観点によれば、ウェブアプリケーションのユーザによるデータ入力のための少なくとも1つのフィールドを含むインターラクティブフォームを有する前記ウェブアプリケーションの特定のページをアクセスする工程であって、前記ウェブアプリケーションにより描画された前記インターラクティブフォームは、前記インターラクティブフォームのためのコードに基づいている、工程と;前記コードから、入力検証コードを抽出する工程であって、前記入力検証コードは、前記少なくとも1つのフィールドに入力されたデータに対する少なくとも1つの制約を含む、工程と;前記入力検証コードの分析に基づいて、前記少なくとも1つの制約を抽出する工程と;前記少なくとも1つのフィールドに対する前記少なくとも1つの制約に少なくとも基づいて、前記少なくとも1つのフィールドのために、文字列の値を見いだす工程と;前記少なくとも1つのフィールドに、前記文字列の値を、自動的に入力する工程と;前記少なくとも1つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;を有する方法が提供される。
本開示に従った、ウェブアプリケーションを検証するための実施形態のシステムの例示的環境を例示した図である。 本開示に従った、インターラクティブなフォームの例を含むウェブブラウザ表示を例示した図である。 本開示に従った、フィールド入力を検証するためのコードセグメントを例示した図である。 本開示に従った、ウェブアプリケーションを検証するためのシステムを例示した図である。 本開示に従った、ウェブアプリケーションを検証するための方法のフローチャートを例示した図である。 図3に示した入力検証コードから抽出されたユーザーネームのための制約を例示する図である。 本開示に従った、コンピュータシステムを例示した図である。
特定の実施形態は、ウェブアプリケーション、特にWeb2.0アプリケーションの検証に関連している。Web2.0アプリケーションは、一般的に動的又はインターラクティブウェブアプリケーションと呼ばれている。このウェブアプリケーションは、サーバとの間で非同期コミュニケーションメカニズムを使用している。これによって、全てのページ及び情報は、リロードしたり毎回通信したりする必要はない。これは、ワールドワイドウェブ又は他の適切なネットワーク環境を介した、インターラクティブな情報共有、インターオペラビリティ、ユーザ中心のデザイン、あるいはコラボレーションを容易にする。ウェブアプリケーション、及び特にウェブ2.0アプリケーションは、しばしば、ブラウザのウィンドウ内に、複数のウィジェット(widgets)を形成し、利用しており、すなわち、これを特徴としている。ウィジェットは、一般的には、スタンドアロンのアプリケーション又はコードのポータブルチャンクである。これは、例えばハイパーテキストマークアップランゲージ(HTML)ベースのウェブページのような、構造化された独立に描画され得るドキュメント内にインストールされ、かつ実行され得る。あるいは、これは、サードパーティのサイトにユーザによって埋め込まれ、このユーザが著作権を有する(例えば、ウェブページ、ブログ、又はソーシャルメディアサイトのプロフィールが挙げられる)。ウェブ2.0アプリケーションの例は、ウェブベースのコミュニティ、ホステッドサービス、ソーシャルネットワークサイト、ビデオシェアリングサイト、又はWiki等と協働して動作してもよい。
特定の実施形態は、ウェブアプリケーションのフォームフィールドのための入力検証コードの自動的な抽出、静的解析技術を利用した入力検証コードの解析、フィールド変数が満足すべき制約の抽出、制約を満足する各フィールドの値を見いだすシンボリックストリングソルバ(symbolic string solver)の利用、及び、入力制約を満足する文字列をフィールドに入力することに関連する。
図1は、検証システム102の実施形態の環境100の例を示している。検証システム102は、1つ以上のハードウエアコンポーネント、1つ以上のソフトウエアコンポーネント、又はハードウエア及びソフトウエアコンポーネントの組合せを含んでいる。検証システム102は、1つ以上のコンピュータシステム内で実行される。コンピュータシステムについては、図7を用いて詳述する。検証システム102は、ウェブアプリケーション104にアクセするよう構成されている。特定の実施形態においては、ウェブアプリケーション104は、少なくともその一部が、検証システム102のコンピュータシステムに配置されている。別の実施形態においては、ウェブアプリケーション104は、1つ以上の異なるコンピュータシステムに配置されてもよい。これらのコンピュータシステムは、検証システム102をホスティングするコンピュータシステムに直接、又は、間接的に接続されている。ウェブアプリケーション104は、その少なくとも一部が、1つ以上のサードパーティのサーバ又はコンピュータシステムによってホスティングされてもよい。
一般的に、ウェブアプリケーションは、ウェブブラウザ(例えば、MICROSOFT WINDOWS(登録商標) INTERNET EXPLORER,MOZILLA FIREFOX,APPLE SAFARI,GOOGLE CHROME,又はOPERA)、あるいは、その他のクライアントアプリケーションを介して、ネットワーク上でアクセスされ得る。あるいは、ウェブブラウザをサポートする言語によってコーディングされたコンピュータソフトウエアアプリケーション(場合によっては、このアプリケーションを実行させるためにウェブブラウザの助けを借りる)によってアクセスされ得る。ウェブアプリケーションは、広く普及している。この理由は、ウェブブラウザに偏在性(ubiquity)があること、リモートのコンピューティングディバイスにクライアント(シンクライアント:thin clientとしばしば呼ばれる)として導入(ランチ:launch)されたウェブブラウザの利便性があること、そして、ウェブアプリケーションをアップデート及び維持するためにリモートクライアントにソフトウエアを配布しインストールする必要がないという付随した能力があることの結果である。ウェブアプリケーションをインプリメントするためには、ウェブアプリケーションは、しばしば、関連するウエッブサイトのバックエンドサーバに提供されている1つ以上のリソースにアクセスすることを必要とする。加えて、ウェブアプリケーションは、しばしば、他のアプリケーションに関連する追加的なリソースにアクセスすることを必要とする。
エンドユーザのマシン(クライアントデバイス)上に配置されたウェブアプリケーションは、エンドユーザのマシンのディスプレイにウェブページを描画させる。ウェブブラウザと共に、あるいはこれと関連して実行されるウェブアプリケーションは、ウェブブラウザに対して、ディスプレイにウェブページを描画させる。ウェブアプリケーションのウェブページは、典型的に、ウェブアプリケーションの他のウェブページへの埋め込まれたリンクを含む。リンクは、これに加えて、このウェブアプリケーション以外の、あるいはこれと関連しないウェブページ及びウェブサイトへのリンクを含む。動的ウェブアプリケーションは、特に、しばしば、複数の埋め込まれたリンクを含む。このリンクは、現在表示しているウェブページに、ハイパーリンク、アイコン、又はその他のクリッカブルな特徴として描画され得る。典型的な動的ウェブアプリケーションは、このウェブアプリケーションをホスティングしているサーバに存在する複数のリソース、あるいは外部のサードパーティのサーバから取り出される複数のリソースを含む。ウェブページ又はウェブページを描画するリソースは、それ自身、複数の埋め込まれたリソースを含んでおり、データレコードを含んでもよい。データレコードとしては、例えば、テキスト情報コンテンツ、又は更に複雑なデジタルエンコードされたマルチメディアコンテンツ、例えばソフトエアプログラム、又は他のオブジェクト、グラフィックス、イメージ、オーディオ信号、ビデオ等が挙げられる。ウェブページを作成する1つの主要なマークアップランゲージとしては、ハイパーテキストマークアップランゲージ(HTML)が挙げられる。その他、ウェブブラウザをサポートする言語及び技術としては、XML(Extensible Markup Language)、XHTML(Extensible Hypertext Markup Language)、Java(登録商標)Script、CSS(Cascading Style Sheet)、JAVA(登録商標)等がある。例えば、HTMLによって、アプリケーション又はウェブページデベロッパは、構造的ドキュメントを作ることができる。これは、テキスト及びリンク、並びにページ内に埋め込まれ得るイメージ、ウェブアプリケーション及び他のオブジェクト(例えば、フォームフィールド)のための構造的セマンティックスを記述することによってなされる。一般的に、ウェブページは、静的構造ドキュメントとしてクライアントに届けられる。しかしながら、ページに埋め込まれたウェブエレメント(例えば、実行可能なJavaScriptコードセグメント)を使用することによって、ページ又は一連のページによってインターラクティブな体験が得られる。クライアントデバイスにおけるユーザセッションにおいて、ウェブブラウザは、ウェブアプリケーション又はウェブページをホスティングするウェブサイトから受信され、又は検索されたページ及び関連するリソース、並びに他のウェブサイトからの潜在的なリソースを解釈し表示する。例えば、ウェブブラウザによって構造化されたドキュメントHTMLが受信されると、このウェブブラウザは、JavaScriptコードセグメントを含む、埋め込まれたコールを実行する、その後、サードパーティホスト又はウェブサイトからリソースをコールし、又はリクエストする。
特定の実施形態においては、検証システム102は、ウェブアプリケーション104を、ネットワークを介してアクセスする。ネットワークとしては、インターネット、エクストラネット、バーチャルプライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイドエリアネットワーク(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)、例えば時間的論理(temporal logic)で記述されてもよい。検証結果108は、ウェブアプリケーション104の1つ以上の検証条件106又は他のテスト又はユースケースの検証の結果としての検証システム102の出力である。
図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を生成する。
図5は、検証システム102により、自動的に、ウェブアプリケーション104のインターラクティブフォームに値を入力する実施形態のモデル500のフローチャートを示している。方法500は、一般的に、ウェブアプリケーションクローラ212がウェブアプリケーション104にアクセスする502から開始する。ウェブアプリケーションクローラ212は、コード(JavaScript,HTML等)を読み込むことにより、ウェブアプリケーション104にアクセスする。ステップ504で、クローラ212が、インターラクティブフォームを表示するウェブアプリケーション104の特定のページをアクセスすると、クローラ212は、そのウェブアプリケーション104から入力検証コード(例えば、図3に示したクライアント側の検証コード)を抽出する。
ステップ504と並行して又はその後に、方法500は、ステップ506に進む。このステップでは、クローラ212は、抽出した入力検証コードを分析し、様々なフォームフィールドの制約を抽出する。クローラ212は、逆方向静的分析(“backwards” static analysis)を実行することによって、制約を抽出する。この分析によって、フォームデータの送信(submission)(例えば、「form submit」ステートメント、「on−click」ステートメント等)に関連するコードのステートメントから分析を開始する。そして、逆方向にコードを移動し、フォームデータを成功裏に転送するために満足すべき、各々の変数のための制約を収集する。入力検証コードは、入力検証コードの制御フローグラフの構成に基づいてもよい。あるいは、または、これに加えて、抽出は、制約を満足する最大のセットの動作(behavior)を提供するために、最も弱い前提条件を持つコードの記号解析(symbolic analysis)に基づいてもよい。図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>”)又はパラメータ化された、以下の文字列である。例えば:
“<script>”+“alert(”+*+“)”+“</script>”
このような、パラメータ化されたアタックは、可変長のアタックベクトルであり、他の点では、フィールドの他の制約を満たす(例えば、文字列長、許された文字、等)。したがって、アタックベクトルは、他のフィールド入力制約によって却下されるようなアタックをランダムに試みるのではなく、アタックがクライアント側のウェブアプリケーションによって受け入れられ得るフィールドにターゲットを当てたものであり、例えば、ユーザネームフィールドの制約は、いずれのアタックも許すことはないであろう。したがって、このようなフィールドは、ランダムにアタックを試みる意味はないであろう。他の利点としては、アタックが構成されるべきサーチスペースが狭まることである。
更に他の実施形態としては、上述の方法及びシステムは、入力検証コードの意図(intent)がインプリメントされているか否かをチェックするために用いられてもよい。実例を示すと、入力検証コードのための意図の指定がある場合、検証システム102は、入力検証コードが実際に意図した目的(object)を達成したかが確認されてもよい。特定の例として、入力検証コードが、URL(uniform resource locator)内に「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))、デスクトップコンピュータシステム、ラップトップ又はノートブックコンピュータシステム、インターラクティブキオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、PDA(personal digital assistant)、サーバ、又は、これらの複数のあらゆる組合せであってもよい。適切な場合には、コンピュータシステム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つ以上の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を含んでもよい。この開示は、特定のプロセッサを記載し、示しているが、この開示は、適切ないかなるプロセッサをも意図している。
特定の実施例において、メモリ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を含んでもよい。本開示は、特定のメモリを記載し、かつ示しているが、本開示はいかなる適切なメモリをも利用することを意図している。
特定の実施形態において、ストレージ606は、データ又は命令のためのマスストレージを含む。限定ではなく、例示として、ストレージ606は、HDD、フロッピー(登録商標)ディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、又はUSBドライブ、又は、これら複数の組合せを含んでもよい。ストレージ606は、適切な場合には、リムーバブル又は、リムーバブルでない(固定)媒体を含んでもよい。ストレージ606は、適切な状況に応じて、コンピュータシステム600の内部又は外部にあってもよい。特定の実施形態において、ストレージ606は、不揮発性、ソリッドステートメモリであってもよい。特定の実施形態において、ストレージ606は、リードオンリメモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能型PROM(EPROM)、又はフラッシュメモリ、又はこれら複数の組合せであってもよい。この開示は、マスストレージ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ネトワークなどのワイヤレスネットワークによる通信のための、ワイヤレス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を含んでもよい。本開示は、特定の通信インターフェースを記載し、示しているが、本開示は、適切ないかなる通信インターフェースをも利用することを意図している。
特定の実施形態において、バス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 Standards Association local)バス、その他適切なバス、又は複数のこれらの組合せを含んでもよい。バス612は、適切な場合には、1つ以上のバス612を含んでもよい。本開示は、特定のバスを記載し、示しているが、本開示は、適切ないかなるバス又は内部接続をも利用することを意図している。
本明細書において、コンピュータ可読の記憶媒体は、1つ以上の実体のあるコンピュータ可読の構造を有する記憶媒体を包含する。限定ではなく、例示として、コンピュータ可読の記憶媒体は、半導体ベース又は他の集積回路(IC)(例えば、FPGA(field−programmable gate array)又はASIC(application−specific IC))、ハードディスク、HDD、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、磁気光ディスク、光磁気ドライブ、フロッピディスク、フロッピーディスクドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、SSD(solid−state drive)、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記載のプログラム。
602 プロセッサ
604 メモリ
606 ストレージ
608 I/Oインターフェース
610 通信インターフェース
612 バス

Claims (11)

  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つのフィールドに入力された前記文字列の値を含む前記インターラクティブフォームを、自動的に送信する工程と;
    をコンピュータに実行させるプログラム。
JP2011150168A 2010-07-08 2011-07-06 ウェブアプリケーションのフォームの自動テストのための方法及びプログラム Active JP5742521B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/832,131 US8543986B2 (en) 2010-07-08 2010-07-08 Methods and systems for test automation of forms in web applications
US12/832,131 2010-07-08

Publications (2)

Publication Number Publication Date
JP2012018676A true JP2012018676A (ja) 2012-01-26
JP5742521B2 JP5742521B2 (ja) 2015-07-01

Family

ID=44508730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011150168A Active JP5742521B2 (ja) 2010-07-08 2011-07-06 ウェブアプリケーションのフォームの自動テストのための方法及びプログラム

Country Status (3)

Country Link
US (1) US8543986B2 (ja)
EP (1) EP2413259A3 (ja)
JP (1) JP5742521B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101548364B1 (ko) 2014-10-22 2015-08-28 경북대학교 산학협력단 Api 호출 정당성의 자동검증 방법, 이를 수행하기 위한 기록 매체 및 장치

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271953B2 (en) * 2008-03-12 2012-09-18 Fujitsu Limited System and method for providing middleware for capture of global requirements and validation for web applications
US8296722B2 (en) * 2008-10-06 2012-10-23 International Business Machines Corporation Crawling of object model using transformation graph
US8359576B2 (en) * 2008-11-14 2013-01-22 Fujitsu Limited Using symbolic execution to check global temporal requirements in an application
US8667467B2 (en) * 2010-07-26 2014-03-04 Sap Aktiengesellschaft Dynamic test scripts
US8661412B2 (en) * 2010-11-19 2014-02-25 Microsoft Corporation Managing automated and manual application testing
US8656365B2 (en) * 2011-09-01 2014-02-18 Infosys Limited Systems, methods, and computer-readable media for measuring quality of application programming interfaces
US9038032B2 (en) * 2012-05-25 2015-05-19 Fujitsu Limited Symbolic execution and automatic test case generation for JavaScript programs
US8972949B2 (en) * 2012-05-29 2015-03-03 Fujitsu Limited Rule-based method for proving unsatisfiable conditions in a mixed numeric and string solver
US8996922B2 (en) * 2012-11-21 2015-03-31 Fujitsu Limited Mixed numeric and string constraint analysis
US9158848B2 (en) * 2013-02-11 2015-10-13 International Business Machines Corporation Web testing tools system and method
US9807085B2 (en) * 2013-03-15 2017-10-31 Veracode, Inc. Systems and methods for automated detection of login sequence for web form-based authentication
US9507945B2 (en) 2013-04-01 2016-11-29 The Johns Hopkins University Method and apparatus for automated vulnerability detection
US8881293B1 (en) * 2013-07-01 2014-11-04 Sap Se Static application security testing
GB2521640A (en) 2013-12-24 2015-07-01 Ibm Payload Generation
US9563422B2 (en) 2014-01-08 2017-02-07 International Business Machines Corporation Evaluating accessibility compliance of a user interface design
US10140102B2 (en) 2014-08-21 2018-11-27 International Business Machines Corporation Evaluating accessibility compliance of a hybrid user interface design
US9811445B2 (en) 2014-08-26 2017-11-07 Cloudy Days Inc. Methods and systems for the use of synthetic users to performance test cloud applications
CN106294504A (zh) * 2015-06-09 2017-01-04 阿里巴巴集团控股有限公司 一种网页图标的显示方法和装置
US10169188B2 (en) 2015-11-18 2019-01-01 International Business Machines Corporation Runtime evaluation of user interfaces for accessibility compliance
US10083015B2 (en) 2016-12-15 2018-09-25 International Business Machines Corporation Mobile accessibility evaluation from application binary
US10083108B1 (en) * 2017-12-18 2018-09-25 Clover Network, Inc. Automated stack-based computerized application crawler
US20220164431A1 (en) * 2020-11-24 2022-05-26 David Michael Vigna Web framework designed for secure locked down browsers
CN112463599A (zh) * 2020-11-18 2021-03-09 平安消费金融有限公司 自动化测试方法、装置、计算机设备和存储介质
US20220321594A1 (en) * 2021-04-02 2022-10-06 Siemens Aktiengesellschaft Development security operations on the edge of the network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044318A (ja) * 2001-08-02 2003-02-14 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
JP2008135029A (ja) * 2006-11-17 2008-06-12 Hewlett-Packard Development Co Lp 攻撃文字列(attackstrings)の知的生成に基づくウェブアプリケーション評価
JP2009087355A (ja) * 2007-10-02 2009-04-23 Fujitsu Ltd ウェブアプリケーションを検証するシンボリック実行エンジンを提供するシステム及び方法
JP2009181240A (ja) * 2008-01-29 2009-08-13 Nomura Research Institute Ltd ワークフロー処理装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083068A1 (en) * 2000-10-30 2002-06-27 Quass Dallan W. Method and apparatus for filling out electronic forms
US6915454B1 (en) * 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US7917895B2 (en) * 2001-07-27 2011-03-29 Smartesoft, Inc. Automated software testing and validation system
US7493387B2 (en) * 2003-09-19 2009-02-17 International Business Machines Corporation Validating software in a grid environment using ghost agents
US7328428B2 (en) * 2003-09-23 2008-02-05 Trivergent Technologies, Inc. System and method for generating data validation rules
US7913231B2 (en) * 2004-05-11 2011-03-22 Sap Ag Testing pattern-based applications
US8347392B2 (en) * 2005-08-25 2013-01-01 Hewlett-Packard Development Company, L.P. Apparatus and method for analyzing and supplementing a program to provide security
US8291387B2 (en) * 2005-11-22 2012-10-16 International Business Machines Corporation Method and system for testing a software application interfacing with multiple external software applications in a simulated test environment
US20080120420A1 (en) 2006-11-17 2008-05-22 Caleb Sima Characterization of web application inputs
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
US8392890B2 (en) * 2007-10-15 2013-03-05 Software Research, Inc. Method and system for testing websites
US8271953B2 (en) * 2008-03-12 2012-09-18 Fujitsu Limited System and method for providing middleware for capture of global requirements and validation for web applications
US8359576B2 (en) * 2008-11-14 2013-01-22 Fujitsu Limited Using symbolic execution to check global temporal requirements in an application
US20120017200A1 (en) * 2010-07-16 2012-01-19 Fujitsu Limited Solving Hybrid Constraints to Validate a Security Software Module for Detecting Injection Attacks
US8850405B2 (en) * 2011-02-23 2014-09-30 International Business Machines Corporation Generating sound and minimal security reports based on static analysis of a program
US8726246B2 (en) * 2011-05-17 2014-05-13 International Business Machines Corporation Static analysis of validator routines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003044318A (ja) * 2001-08-02 2003-02-14 Fujitsu Ltd テスト支援プログラムおよびテスト支援方法
JP2008135029A (ja) * 2006-11-17 2008-06-12 Hewlett-Packard Development Co Lp 攻撃文字列(attackstrings)の知的生成に基づくウェブアプリケーション評価
JP2009087355A (ja) * 2007-10-02 2009-04-23 Fujitsu Ltd ウェブアプリケーションを検証するシンボリック実行エンジンを提供するシステム及び方法
JP2009181240A (ja) * 2008-01-29 2009-08-13 Nomura Research Institute Ltd ワークフロー処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101548364B1 (ko) 2014-10-22 2015-08-28 경북대학교 산학협력단 Api 호출 정당성의 자동검증 방법, 이를 수행하기 위한 기록 매체 및 장치

Also Published As

Publication number Publication date
US20120011489A1 (en) 2012-01-12
EP2413259A2 (en) 2012-02-01
JP5742521B2 (ja) 2015-07-01
EP2413259A3 (en) 2012-07-04
US8543986B2 (en) 2013-09-24

Similar Documents

Publication Publication Date Title
JP5742521B2 (ja) ウェブアプリケーションのフォームの自動テストのための方法及びプログラム
US9104809B2 (en) Facilitating automated validation of a web application
EP2407877A1 (en) Methods and systems for extensive crawling of web applications
JP5786513B2 (ja) ソフトウェアモジュールを検査するためのシステム、方法及び記憶媒体
JP5821678B2 (ja) ウェブ・アプリケーションのブラウザに依存しない自動互換性チェックのためのウェブ・サービス
US10380008B2 (en) Identifying implicit assumptions associated with a software product
US8479170B2 (en) Generating software application user-input data through analysis of client-tier source code
US8543983B2 (en) Creating hierarchical message sequence charts for visualizing user-interactive applications
US8805094B2 (en) Using machine learning to improve detection of visual pairwise differences between browsers
EP2803000B1 (en) Custom browser-side spreadsheet functions
JP5786512B2 (ja) インジェクション攻撃を検出するためのセキュリティ・ソフトウェア・モジュールを検証するためのハイブリッド制約条件の求解
JP5803499B2 (ja) ウェブアプリケーションの解析のためのナビゲーションモデルを取り出す方法、記憶媒体、装置及びシステム
JP5786511B2 (ja) ソフトウェア・モジュールの仕様要件を検証するためのハイブリッド制約条件の求解
JP2012022681A (ja) ソフトウェア・フレームワークを比較するためのシステム及び方法
US8453117B2 (en) Providing software validation as a service
JP5691840B2 (ja) コンピュータ装置により使用される方法、システム、記憶媒体及びコンピュータプログラム
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
US20120150941A1 (en) Dialog Server
Hraška Browser fingerprinting
Ieamsirinoppakun A COMPARATIVE STUDY OFSECURITY VULNERABILITIES INRESPONSIVE WEB DESIGN FRAMEWORKS

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150420

R150 Certificate of patent or registration of utility model

Ref document number: 5742521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150