パスワードを守り抜く
Webサービスやシステム開発を進めていく上では「パスワード管理方法」が重要です。
仕様によってはパスワードを平文(そのまま)保存するケースもあれば伏せ文字にして表面上で見えないように工夫するパターンなど色々ありますよね。
ただし、本来あるべき姿は「パスワードを複雑に暗号化処理して保存する」のが理想。
セキュリティ的な観点で言えばデータベースに保存された値を見ても入力値がわからない状態にすることで不正に漏れたパスワードも「保護」できます。
ざっと流れで言えば下記の通りですね。
1. フォームでの入力中は伏せ文字にする
2. ウェブの通信はSSL(https)を強制しておく
3. データベース保存時にハッシュ化を行う
上記にすればユーザーがパスワードを入力している最中もその後の送信ボタンが押された後の通信中もデータベースに保存される瞬間まで保護されます。
システム側で保存する処理は下記ロジックですね。
$hashedPassword = password_hash($userPassword, PASSWORD_DEFAULT);第二引数は「PASSWORD_DEFAULT」と書くことでPHPのバージョンに応じて自動でアルゴリズムが決まるので意外と柔軟に使えます。すごく便利。
利用者目線で考えると「パスワードは設定したユーザー本人にしかわからない」という仕様が嬉しいですよね。普段使っているパスワードを入力してそのままデータベース上に保存されていると使い手として「本当に大丈夫かな?」と心配してしまいます。
どこまで安全策を講じるかは予算と納期によりますが安全に越したことはありません。
時間が許されるなかで最善の仕様で進められると安心ですよね。ぜひご参考ください。