password-paste-enabled

認証フィールドで貼り付けをブロックしてはいけません

manualWCAG 3.3.8 (AA)確度:medium重大度:seriousunderstandable

パスワードまたはワンタイムコードのフィールドに、貼り付けをキャンセルするインラインのpasteハンドラーがないことを確認します。そのようなハンドラーがあると、WCAG 3.3.8が支援の仕組みとして前提にしているパスワードマネージャーやクリップボードが使えなくなります。

適用範囲:autocompleteトークンがcurrent-password、new-password、one-time-codeのいずれかであるコントロールと、autocompleteで別の目的を指定していない<input type="password">に適用されます。disabledまたはreadonlyのフィールドには、ブロックされる入力がありません。また、アクセシビリティツリーの外にあるフィールドは入力を求められていないため、どちらも対象外です。確認を求める対象が見つからない場合は、passではなくnotApplicableを報告します。このルールが適用されるのはチェックが検出するものだけであり、そこに何も見つからなくても、すべて問題ないことは示されないためです。

期待される結果:フィールドに引き続き貼り付けできることを、レビュー担当者が確認します。パスワードを覚えることは認知機能テストであり、3.3.8はそれを乗り越えるためにユーザーを支援する仕組みを求めています。パスワードマネージャー、あるいはワンタイムコードの場合はクリップボードが、その仕組みに当たります。

検出結果が報告する内容:

  • handler:フィールドのonpaste属性の値で、空白をまとめたものです。貼り付けを取り消すだけのもの(PASTE_CANCELLED)か、取り消すかどうかわからない別のスクリプトを呼び出すもの(PASTE_HANDLER_OPAQUE)です。

これらのdata.detailsのフィールドは、検出結果を読み解き、再現するのに役立ちます。reasonCodeと、出力スキーマで安定と明記された一部のフィールドを除き、安定した契約ではありません。マイナーリリースで名前が変わったり、なくなったりすることがあるため、これらに依存した実装はしないでください。

例

can't tell
<label for="p">Password</label>
<input type="password" id="p" onpaste="return false">

インラインのハンドラーが貼り付けを完全にキャンセルするため、パスワードマネージャーやコピーしたワンタイムコードが使えません。

n/a
<label for="p">Password</label>
<input type="password" id="p" autocomplete="current-password">

pasteハンドラーはまったく設定されていません。

確認方法

このルールが判断できない場合はcantTellを報告し、判断を人に委ねます。ルールが投げかける各質問を、理由コードごとに、答えるための手順とともにここに示します。検出結果にも同じ手順がhowToCheckとして、スキャンの言語で含まれます。出力スキーマを参照してください。

PASTE_CANCELLED

  1. テスト用のパスワードまたはコードをクリップボードにコピーしてください。
  2. レポートに示されたフィールドをクリックし、貼り付けてください(Ctrl+V、Cmd+V、またはコンテキストメニュー)。
  3. ワンタイムコード用にフィールドが複数のボックスに分かれている場合は、数字が各ボックスに振り分けられるか確認してください。
  4. ブラウザーのパスワードマネージャーでフィールドに入力することも試してください。
  5. 両方がブロックされている場合は、パスキーやメールで送られるリンクなど、記憶や入力を必要としない別のログイン方法が同じサインイン手順にあるか確認してください。機能し、キーボードで使える場合にだけ、それを認めます。

満たす場合:貼り付けや自動入力した値が入力欄に表示されるか、同じ手順に、記憶や入力を必要としない機能するログイン方法があります。

満たさない場合:貼り付けとパスワードマネージャーによる入力がブロックされ、他のログイン方法もないため、利用者は値を記憶して入力しなければならず、WCAG 3.3.8を満たしません。

PASTE_HANDLER_OPAQUE

  1. テスト用のパスワードまたはコードをクリップボードにコピーしてください。
  2. レポートに示されたフィールドをクリックし、貼り付けてください(Ctrl+V、Cmd+V、またはコンテキストメニュー)。
  3. 値全体がフィールドに(分割されたコードのボックスであれば各ボックスにわたって)入ること、また貼り付けが許可されていないというメッセージが表示されないことを確認してください。
  4. ブラウザーのパスワードマネージャーでフィールドに入力することも試してください。
  5. 両方がブロックされている場合は、パスキーやメールで送られるリンクなど、記憶や入力を必要としない別のログイン方法が同じサインイン手順にあるか確認してください。機能し、キーボードで使える場合にだけ、それを認めます。

満たす場合:貼り付けや自動入力した値が入力欄に完全に表示されるか、同じ手順に、記憶や入力を必要としない機能するログイン方法があります。

満たさない場合:貼り付けや自動入力がブロックされるか値が切り詰められたり消去されたりし、他のログイン方法もないため、利用者は記憶から入力しなければならず、WCAG 3.3.8を満たしません。

ソースコードを見る