こんにちは、tahara です。
おかげさまで、アクトインディ技術部隊は aoki の入社により 100% 増量しました! ありがとうございます!!
さて、浮かれてばかりはいられませんので、今回は skipfish を使ってセキュリティテストを行ってみたいと思います。 脆弱性を洗い出します!
skipfish は URL さえ指定しすれば、リンクをたどって自動的にテストを行ってくれる、なかなかできるこです。 Basic 認証やフォーム認証にも対応しています。
Rails プロジェクトで skipfish を使う時の注意点をあげてみます。
- ずごい勢いで大量にアクセスを行うので、本番環境で実行してはいけません。
- ずごい勢いで大量にアクセスを行うので、development 環境ではなく、より速い production 環境で実行した方がいいと思います。
- production 環境を使うのは色々危険なので、ネットワークは切った方がいいかも。
- 特にメール送信とかしちゃうと大変なので、気を付けましょう。
- メールを送信しないように config/environments/production.rb で config.action_mailer.delivery_method = :test して動かします。
- Rew Relic の gem を Gemfile から削除します。
- Exception Notfication の gem を Gemfile から削除します。
- production 環境は public/assets を使うので、プリコンパイルしておきましょう
- ログインが必要なページのテストする場合は、 -X オプションでログアウトページを除外し、 -I オプションでチェック対象 URL を限定しましょう。
ダウンロードして make すれば使えます。
./skipfish -L -W- -m 4 -o /tmp/skipfish-home -A "user:passowrd" -I /foo -I /bar -X /foo/logout --auth-form https://localhost/foo/login --auth-user "user" --auth-pass "passowrd" --auth-verify-url http://localhost/foo --auth-user-field "login" --auth-pass-field "password" http://localhost/foo
- テスト速度重視で辞書を使わない場合 -L -W- を指定します。
- -m で同時アクセス数を指定できます。
- -o で指定したディレクトリにテスト結果が出力されます。上記の場合は、ブラウザで /tmp/skipfish/index.html を開くとテスト結果を参照できます。
- -A は Basic 認証です。
- —auth で始まるのはフォーム認証です。
- -I でテスト対象の URL を限定できます。 上記の場合は /foo と /bar 以下のページのみ対象とします。
- -X でログアウトページを除外します。
ずごい勢いで大量にアクセスを行うので、Web アプリの規模によってはかなりの時間がかかります。 実行中はスペースキーで、進捗表示とアクセス中のページ表示を切り替えられます。
これでセキュリティについても安心です!!
・・・というわけには、いかないですよね。
やはり、ちゃんと勉強して、作る時、コードレビューの時、常にセキュリティを意識しないと。