モバイルアプリケーションやシングルページアプリケーションでは、APIサーバ側から作成を始めることもありますので、VAddyでどのようにスキャンまで行うか説明します。 VAddyでは、検査対象となるURLやパラメータをクロール情報としてスキャン実行前に登録する必要があります。 通常ではブラウザのProxy設定をVAddyのProxyサーバに変更して、Webアプリケーション画面を操作すればクロール情報が生成されますが、View側の画面をまだ作成していない場合は、このクロールをcurlなどのコマンドを使って生成します。
まず、curlコマンドから自分のWebアプリケーションにアクセスできるか確認します。
GETリクエストの場合
curl http://www.example.com/blog/Api/view.json?id=1
POSTリクエストの場合(データはJSON形式)
curl -v -H "Accept: application/json" -H "Content-type: application/json"
-X POST -d '{"Articles":{"title":"post_aa", "body":"bodyhoge"}}'
http://www.example.com/blog/Api/add.json
これで問題なければ、下記のようなシェルスクリプトを作成します。
#!/bin/sh PROXY='--proxy http://54.92.84.100:28888' ## (1) curl $PROXY -k 'http://www.example.com/vaddy-abc12345.html?action=begin&project_id=xxxxxx' ## (2) curl $PROXY -k 'http://www.example.com/blog/Api/view.json?id=1' ## (3) curl $PROXY -k -H "Accept: application/json" \ -H "Content-type: application/json" \ -X POST -d '{"Articles":{"title":"post_aa", "body":"bodyhoge"}}' \ 'http://www.example.com/blog/Api/add.json' ## (4)
sleep 1; curl $PROXY -k 'http://www.example.com/vaddy-abc12345.html?action=commit&project_id=xxxxxx'
もしhttpsのサイトをクロールする場合は、クロール時に証明書エラーが出ますので、curlの -k オプションもしくは --insecure オプションを全てのcurlコマンド実行時に付与してください。
最初に変数PROXYに、VAddyのProxyサーバの情報をセットします。これにて全てのHTTPリクエストはVAddy Proxyを経由してユーザのwebアプリケーションにアクセスするようになります。この変数をPROXY=“のように空にすればVAddy Proxyを経由せずに通常のアプリケーションの動作確認に利用できます。
ProxyにセットするIPとポート番号はプロジェクトによって異なる場合がありますので、VAddyの画面のProxyCrawlingメニューからProxyのIPとポート番号をご確認ください。
(1)と(4)は、VAddyのクロール記録の開始と終了を行うためのURLです。vaddy-abc12345.htmlのファイル名はユーザ毎に異なります。(4)のクロール終了URLのアクセスの前に念のため1秒のsleepを入れてください。(クロール開始から終了まで早く終わる場合にうまくクロールが終了できない場合があるため)
(2)と(3)は、実際の検査対象となるAPIへのアクセスで、curlコマンドにProxy情報を付与しています。
POST/PUTでJSONデータをAPIサーバに送信する場合は、HTTPリクエストヘッダの中にContent-type: application/jsonが含まれていると思います。 このヘッダ情報がある場合にJSONの中のパラメータも検査対象となります。 Angular.jsなどjavascriptフレームワークを使っていればこの形式になっていると思いますので、問題なく検査できます。
さいごに
URLやパラメータが増えるたびに、このシェルスクリプトに情報を追加して実行していくだけで、VAddyのクロール情報が更新され、スキャンの実行時にそれらが検査されます。 スキャンの実行はVAddyの画面からも実行できますが、WebAPIを提供していますので、VAddyコマンドラインツールgo-vaddyを利用すれば、cronで定期実行や、CIと連携した検査の実行が可能となります。