references/auth-and-safety.md
A supporting file of the a11y-check-page skill.
認証と、ブラウザ操作の安全性
ログインを伴うページや、データを変更しうるページをチェックするときの規則。 ログインを伴うチェックでは、操作を始める前に必ずこのファイルを読む。
資格情報の取り扱い
利用者から渡された ID、パスワード、トークン、ワンタイムパスワードなどについて、以下を守る。
- レポートファイルに書かない。 「テストアカウントでログインして確認した」という 記述に留め、値そのものは書かない
- 会話に再出力しない。 確認のために復唱することもしない
- スクリーンショットに写さない。 ログインフォームに値を入力した状態は撮影しない。 ログイン画面自体をチェックする必要がある場合は、入力前の状態を撮影する
browser_evaluateのコードに埋め込まない。 入力はbrowser_typeなどの 専用のツールで行う- チェック終了後、ログアウトできる場合はログアウトする
環境の確認
チェックを始める前に、対象が本番環境かどうかを利用者に確認する。
- 本番環境の場合: 実データが表示され、他の利用者に影響する操作が発生しうる。 破壊的操作は原則として行わない。個人情報が画面に表示されている場合、 スクリーンショットを撮らないか、レポートに含めない
- テスト・ステージング環境の場合: 比較的自由に操作してよいが、それでも破壊的操作の 可否は確認する
本番アカウントではなく、チェック用に用意されたアカウントを使うことを推奨する。
破壊的操作
以下は、実行する前に必ず利用者に許可を求める。許可を求めずに実行してはならない。
- データの作成、変更、削除
- フォームの送信(問い合わせ、申し込み、注文、投稿)
- メール、通知、メッセージの送信
- 決済、課金、ポイントの消費
- 設定の変更(特に他の利用者に影響するもの)
- ファイルのアップロード、ダウンロード
- アカウントの状態を変える操作(退会、パスワード変更、権限変更)
許可を求めるときは、何をしようとしているか、なぜ必要かを具体的に伝える。
VIS-31(SC 3.3.4 エラー回避)の確認のため、この申し込みフォームを実際に送信して、
送信前に確認画面が出るか、送信後に取り消せるかを見たいです。
テストデータが1件作成されます。実行してよいですか。許可が得られない場合は、その観点を「判定不能」として記録し、レポートの 「要追加確認」に理由とともに記載する。 推測で「問題なし」としてはならない。
送信せずに確認できること
破壊的操作の許可が得られない場合でも、以下は確認できる。
- 送信ボタンを押す前の段階でのバリデーション表示(不正な値を入れてフォーカスを外す)
- 確認画面へ進む導線があるか(ボタンのラベルが「確認する」か「送信する」か)
- 入力欄のラベル、説明、
autocomplete、エラー表示の実装
これらで判定できた範囲を明示し、残りを「要追加確認」に回す。
操作の範囲
- 指定された対象の範囲を超えて操作しない。 外部サイトへのリンクを辿らない。 別ドメインへ遷移した場合は戻る
- 認証が必要なページでチェックしているとき、意図せずログアウトされる操作
(「ログアウト」リンクを押すなど)に注意する。フォーカス巡回の確認中に
Enterを 押してしまわないよう、リンクやボタンではEnterを押さずにフォーカス位置の記録に留める (操作の確認が必要な要素は、個別に選んで実行する) - 意図しない遷移が起きた場合は、元の画面に戻ってから続行する。どこまで確認済みだったかを 見失わないよう、状態ごとの進捗を記録しておく
多要素認証
多要素認証がある場合、コードの入力は自動化できない。以下のいずれかを利用者に相談する。
- 利用者が手動でログインした状態のブラウザを使う(Playwright MCP の永続プロファイル)
- 多要素認証が無効なテストアカウントを使う
- 利用者にコードを都度伝えてもらう(この場合もコードをレポートに書かない)
なお、多要素認証の入力欄そのものもチェック対象になりうる(SPEC-03、SEM-05、VIS-29)。 コードの入力欄が1文字ずつ分割されていて貼り付けができない実装は、SPEC-03 の問題である。
個人情報
チェック中に実在の利用者の個人情報が表示された場合、以下を守る。
- スクリーンショットに含めない。含まざるを得ない場合は、その部分を避けて撮影する
- レポートに転記しない。要素を特定する必要がある場合は、セレクタや構造で示す
- 会話に出力しない