ちょっと社内の開発チームから、開発中のサービスを触ってみてくれと言われ、そしてそこにフォームがあったときにどんなことをすればよいのか、ざっとリストしてみた。ちなみに海外では社内の動作確認会をバグバッシュと呼んでいる。
-
連打してみる
- とにかく連打すればよい。もし二重にデータができたら、喜びのポーズをしてもらってかまわない。
-
空欄のまま submit
- フォームがあったらとりあえず「送信ボタン」相当のボタンを何も記載せずに押してみよう。
- エラー的な文言も何も表示されなかったらそれは問題である。
- なお、よくトレーニングされた開発者が作成したフォームはなにか記載するまで「送信ボタン」が薄いグレーで表示されていたりする。
- このようなフォームを見つけたら開発者を褒めてあげると開発者は内心とても嬉しいと思ってくれるだろう。
- フォームがあったらとりあえず「送信ボタン」相当のボタンを何も記載せずに押してみよう。
-
フォーム表示後に、フォームの送信が通る条件 ( validation という) を別タブなどで変更する
- 必須ではないフォームがあったら別画面でそれを必須に設定したりする。
- 非必須のフォームを表示して、別タブで必須化する、設問項目を増やすなど。
- 最近 Javascript で画面を構成する SPA が主流となってきたため、画面を構成した時に予期せぬ事態がとくにあとから発生した時、どれくらい耐久性のある防御的な実装をしているか問われてくる。
- ある人は昔 Windows でよく見た「予期せぬエラーがおきました」という恐怖のエラー体験を思い出すかもしれない。
-
嫌な文字注入
- 全角スペースだけ、半角スペースだけ、あるいは iPhone の絵文字を注入してなにかまずいことが起きないか。ユーザーは絵文字が大好きだが、開発者は大嫌いなことが多い。
- 連続した記号、例えば --------- をいれてあげるとなにかレイアウト崩れが起きるかもしれない。
-
POST 後にバックキーやリロードを組み合わせて意図しない動作か破壊検証
- ユーザーは戻るボタンが大好きだ。
- せっかちなユーザーは 0.5 秒でも待たされると、Mac なら Command + R、ウインドウズなら F5 を反射的に押下しているだろう。
-
一定時間放置して、1日くらいしてから送信する
- 締め切り期限を過ぎた状態でフォームが表示されていて送信されたとき、締切を過ぎても受け付けてくれたら運営にとっては問題、それともユーザーにとってはラッキーなのか。
-
別タブでフォームを開いて、ダブル投稿して不都合がないか
- 一人一回しか投票できない投票フォームを、複数画面同時に開いて複数回投稿できるとしたら・・ラッキー、いや、きっとまずいはずだ。
-
フォームを表示したまま、ログインユーザーを切り替えて、フォームを表示した人と今ログインしている人が不一致の状態で投稿できるか検証する
- 「俺、俺だよ俺」。そうオレオレ詐欺は Web サービスにも存在するのだ。
-
設定できないはずの値にパラメタを書き換えて POST 後のサーバサイドでの妥当性チェックをしているか破壊検証する (上級者向け)
- 6桁の数字で入力してください、とかいてあったら、とりあえず Inspector を起動して、他の内容を注入してみる。
-
hidden 値を意図しない値に書き換えて破壊する (上級者向け)
- 見えないフォームで送信する内容を書き換えた時に意図しない動作をしないかどうか・・・!
-
とりま XSS / SQL 注入 (上級者向け)
- もうここまで読まれた方は、詳しくは調べてほしい。
これらをサクッとやってあげて、問題があれば 5W1H をまとめて開発チームにフィードバックしてあげると一目置かれるはずだ。