Skip to main content

Contrastクローラー

Contrastクローラーは、Contrast Assessを有効にしたContrastエージェントを組み込んだWebアプリケーションの疎通を支援するためのアプリケーションです。このアプリケーションは、Webアプリケーションのリクエストハンドラやコードパスを実行するので、これらの箇所でエージェントが脆弱性を検出することができます。

Webアプリケーションのテストカバレッジが広くない場合は、アプリケーションに対してクローラーを実行することで、より包括的にContrast Assessの解析を行うことができます。

クローラーは何をする?

クローラーは、アプリケーションからページのリストを取得し、そのページからアプリケーションの他のページへのリンクを検索し、取得および検索対象のキューにそれらのページを追加します。クローラーは、取得したページのHTMLフォームを検索し、ページに含まれる「submit」ボタンを押します。1回はデフォルトの入力値で、もう1回は生成された入力データです。

アプリケーションに関する留意点

Contrastクローラーで使用するアプリケーションを選択する際には、以下の条件を考慮してください。

  • 現在、クローラーはAPIエンドポイントを実行しません。

  • クローラーは、アプリケーションのページでリンクを検索するだけでなく、返されるページでHTMLフォームを検索し、フォームにtype=submitのボタン要素が含まれていれば、フォームに入力してPOSTを行います。

    最近のWebアプリケーション、特にシングルページアプリケーション(SPA)では、submitボタンにアタッチされていないJavascriptイベントハンドラを使用してデータ送信をトリガすることがあります。このようなアプリケーションからのデータ送信には、現在対応していません。

クローラーのワークフロー

  • クローラーはContrastからルートのURLのリストを取得し、そのリストを使ってリクエストキューを初期化します。取得したページは、ドキュメントオブジェクトモデル(DOM)にレンダリングされます。

  • クローラーは、取得したページのDOMを検索し、アプリケーション内の他のページのリンク(HTMLアンカー要素)やフォーム(HTMLフォーム要素)を探します。URLがページのリストにまだ存在しない場合は、取得ページのキューにURLが追加されます。

  • クローラーは、検出された各フォームに対して、2つの送信を実行します。1つはフォーム入力のデフォルトデータ、もう1つは生成されたデータでのフォーム入力です。submitタイプのフォームのボタン要素でボタンの押下をシミュレートして、フォームを送信します。

    日付や電話番号の書式を調整したり、特定の入力名に対してどのようなデータを入力すべきかを指定するヒントを追加したりすることで、特定のアプリケーションの結果を改善できる場合があります。このような調整は、faker.jsonという設定ファイルを使用して行うことができます。

  • その後、Contrastクローラーは取得と送信のプロセスを繰り返します。最初のクロールでフォーム送信によって新しいリソースが作成された場合、クローラーは2回目のクロールで新しいリソースへのURLを取得して実行します。

認証

Contrastクローラーは、認証が必要な多くのWebアプリケーションをサポートするように設定できます。この機能を使用するには、認証スクリプトを記録してください(Playrightがこの機能を提供します)。Playwrightを組み込んだブラウザを使用してアプリケーションに接続すると、スクリプトが記録されます。ユーザは、アプリケーションにログインし、アプリケーションからログアウトし、2つのページ要素(インジケーター)を選択する必要があります。

認証をサポートするようにクローラーを設定すると、クローラーは内部で2つの別々のクロールを実行します。

  1. すべてのページ取得が、認証されたセッションで試行されます。

  2. 次に、認証されていないブラウザセッションでページの取得が試行されます。

クローラーは、セッションインジケータ要素を使用して、ブラウザの認証状況を検証します。現在のブラウザセッションが望ましい状態ではない場合、Contrastページハンドラは必要に応じてログインまたはログアウトスクリプトを実行し、リクエストを再送信します。

次の手順