HTTPのBasic認証で、ユーザー名とパスワードがクライアントからサーバーへ送られる方法はどれですか?
1〜4キーで選択、Enterで回答できます
解説
正解は「Authorization ヘッダーに Basic に続けて」です。Basic認証では、ユーザー名とパスワードを : でつないだ文字列を Base64(バイナリや文字列を英数字などの安全な文字に変換する方式)で符号化し、Authorization: Basic ... という形でリクエストのたびに送ります。やり取りの流れ保護されたURLへ認証情報なしでアクセスすると、サーバーは 401 Unauthorized と WWW-Authenticate: Basic realm="..." を返して認証を要求します。ブラウザはダイアログを表示し、入力された値を次のように送信します。GET /admin HTTP/1.1 Host: example.com Authorization: Basic dXNlcjpwYXNz # "user:pass" を Base64 にした文字列 他の選択肢が誤りである理由「WWW-Authenticate ヘッダーに」は、サーバーがクライアントへ認証を要求するためのヘッダーです。送る向きが逆になっています。「パスワードを SHA-256 で」はDigest認証などの発想で、Basic認証はハッシュ化を一切行いません。「Cookie ヘッダーに」はセッション方式の説明です。Basic認証はサーバー側に状態を持たず、毎回同じ認証情報を送ります。Base64は暗号化ではありませんBase64は誰でも即座に元へ戻せる単なる変換で、暗号化ではありません。そのため平文HTTPで使うと、通信経路上でパスワードがそのまま読み取れてしまいます。Basic認証を使う場合はHTTPSを必須にしてください。また、リクエストごとに認証情報が送られる性質上、アクセスログやプロキシに Authorization ヘッダーが残らないよう、ログのマスキング設定もあわせて確認しておくと安全です。参考RFC 7617: The 'Basic' HTTP Authentication SchemeHTTP 認証 - HTTP | MDN