サイト制作を行っていると、
会員制サイトを構築することも多々あると思います。
それで、
会員登録フォーム作成時、
ユーザーに希望のパスワードを入力させる仕様にした場合、
考えないといけないのが、
確認画面に
入力したパスワードをマスク化せずにそのまま表示させるのか、
それとも、
マスクして表示させるのか
という点になります。
パスワードをマスク化せずに画面に直接表示させてしまうと、
・入力画面の「のぞき見」「盗み見」 ※ショルダーハックと言います
・キャッシュ制御の不備による情報漏洩
などの危険性が発生してしまいます。
その為、
当然マスクして表示させるべきなんですが、
確認画面でそのまま表示させるようにしたいと言われるお客様もいらっしゃいます。
ユーザーに入力ミスが無いかを確認させたいというのが、
目的らしいです。
が、
こういったサイトでは必ずパスワードの再発行フォームを作成するので、
そのフォームから再度発行すればいいだけのことです。
なので、
セキュリティー面と比べてどちらが重要かということを説明して、
極力マスクを掛けて表示させるように話しを持って行くしないといけないですね。
マスクを掛ける場合には、
PHPで構築しているサイトであれば、
<?php
echo str_repeat("*", mb_strlen($password, "UTF8"));
?>
とすればOKです。
あと、
最初の数文字だけ表示させて、その後ろの文字にマスクを掛けたい、
と言われる場合や、
逆に後ろの数文字だけマスクを掛けずに表示させたい、
と言われる場合もあります。
そのような場合は、
以下のようなコードで対応可能だと思います。
<?php
$password = "1234567890";
//前半2文字だけ表示
echo mb_substr($password, 0, 2, "UTF-8") . str_repeat("*", mb_strlen($password, "UTF-8") - 2);
⇒「12********」と表示
//後半2文字だけ表示
echo str_repeat("*", mb_strlen($password, "UTF-8") - 2) . mb_substr($password, -2, 2, "UTF-8");
⇒「********90」と表示
?>
個人的には、
数文字だけ表示させるということに何の意味があるのか分からないので、
私は全文字マスクを掛ければいいと思いますが、
どうしても言われる場合には、
これで対応可能です。
最後に、
ユーザーが入力した値をhiddenで持たせて受け渡ししようとする場合がありますが、
この際、
パスワードのような重要な項目は注意して下さい。
hiddenのvalueにそのまま設定していると、
漏れてしまう可能性はなくはないです。
なので、
パスワードはセッションに格納した方がいいとのことです。
勿論セッションも取り扱いを間違えるとまずことになるので、
取り扱いには注意が必要です。
この記事へのコメントはありません。