本文へ移動
easeweb
ご相談
トピックを検索

パズルを解く以外に通れないCAPTCHA

チケットサイトのログインで、パスワードを2回間違えると、ゆがんだ文字の画像が出ます。音声版もほかの方法もないため、画像を見られない人や読めない人は先へ進めません。

WCAG 2.2
SC 1.1.1ASC 3.3.8AA· 2.2 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <img src="/captcha" alt="CAPTCHA">
アクセシビリティの問題を示した図: 全盲:画像には何と書いてあるの?
01

問題

ゆがんだ画像が見えない人や、その文字を読み取れない人は、画像を解く以外にログインする方法がないため、まったくログインできません。

02

試してみる

パスワードを2回打ち間違えたところです。画像を見ずに、ログインしてみてください。

下の読み上げは、スクリーンリーダーと同じようにフォームを上から読みます。見なくても、パズルを解かなくても先へ進める方法はありますか?

問題あり 修正できますか?

問題画像だけのCAPTCHA

ログインしてチケットを購入

試行回数が多すぎます。下の文字を入力してログインしてください。

7KX4P2

上から読むと、スクリーンリーダーの読み上げ:

  1. 試行回数が多すぎます。下の文字を入力してログインしてください。
  2. メールアドレス、編集、[email protected]
  3. パスワード、保護された編集
  4. CAPTCHA、画像
  5. 表示された文字を入力、編集
  6. ログイン、ボタン

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

ボットはページの裏で止めるか、CAPTCHAに、別の感覚で使える形と、テストのいらない方法を添えます。

  1. 1サーバーでの確認で済むなら、ログインにCAPTCHAを置かない。
  2. 2CAPTCHAの目的を代替テキストで伝え、別の感覚でも使えるようにする。
  3. 3ログインでは、どのCAPTCHAの横にも、テストのいらない方法を置く。
修正前 画像だけのCAPTCHA
<form action="/sign-in" method="post">  …  <img src="/captcha" alt="CAPTCHA">  <label for="captcha">Type the characters you see</label>  <input id="captcha" name="captcha">  <button type="submit">Sign in</button></form>
修正後

CAPTCHAをなくし、試行回数をサーバーで制限する

<form action="/sign-in" method="post">  …  <!-- No CAPTCHA: the server limits attempts per account and per address. -->  <button type="submit">Sign in</button></form>

この方法を選ぶ理由:人を試さずにボットを止める

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。

04

デザインの案

ボットの確認は、何も求めずに、穏やかに見せられます。

パスワードを2回間違えた後の画面を、4通りに描きました。Tabで移動して、それぞれ試してください。2つはパズルなしで誰でも通れ、2つは親しみやすく見えるだけです。

デザインファイルで

  • まずパズルのないログインを描く。ボットの確認を入れるなら、何も求めない控えめな1行として描く。
  • 確認サービスが人を疑ったときに出す画面も描く。人がつまずくのは、その画面だから。
  • 確認を避ける方法は、下の小さな灰色の文字ではなく、確認と同じ大きさと重みで描く。
  • 画像ごとに、「人であることを確かめるために入力する文字」のように、その目的を代替テキスト用に書き添える。

合格

  • ボットでないか確認しています…

    ひとりでに終わる確認 小さな状態表示が、ページを使っている間に確認を進め、終わったことだけを伝えます。見ることも聞くことも解くこともないため、別の感覚の形も、避ける方法もいりません。
  • 続ける方法を選んでください

    同じ重みの2つの進み方 確認と、それを避ける方法を、同じ大きさの2枚のカードとして並べます。小さなリンクを探す必要はありません。片方は文字を見るか聞くかを選べ、もう片方は何も解かずにログイン用のリンクをメールで受け取れます。

不合格

  • スライドしてパズルを完成させてください

    ピースを隙間まで滑らせるWCAG 3.3.8 文字を打つより軽く感じますが、パズルであることに変わりはありません。ピースを隙間に合わせるには視覚と思いどおりのドラッグが必要で、音声の形もなく、ログインでは3.3.8はパズルを例外にしていません。ここでは矢印キーでも動かせますが、それでも変わりません。
  • バスが写っているマスをすべて選んでください

    バスの写ったマスをすべて選ぶWCAG 1.1.1 物を選ぶことはAAの3.3.8では認められているため、安全な選択に見えます。しかし、マスは絵だけで、横に音声の形がないため、見えない人は始めることもできません。1.1.1は別の感覚の形を求めています。
05

修正の確認

マウスを使わない4つの確認

確認方法: スクリーンリーダー、キーボード、音を消して視聴、画面を見ずに視聴

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。CAPTCHAのサービスやその設定、ログインのフォームを変更した際は、再度確認します。

制限

このサンプルは、どのフォームでも同じ結果になることを保証するものではありません。どのCAPTCHAも誰かを締め出します。音声版は盲ろうの人の助けにならず、メールのリンクはメールを確認できない人の助けになりません。最も確かな解決は、人であることを証明させないことです。3.3.8の対象はログインです。問い合わせフォームや購入手続きのCAPTCHAは、3.3.8ではなく1.1.1の対象ですが、締め出す相手は同じです。間違いの後にだけ出るものも含め、利用者が頼る道具で流れ全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方