{category}

PHP - パスワードハッシュ

password_hash()

パスワードハッシュ(Web開発とセキュリティ

意味 パスワードを安全に保存


password_hash()とは?

password_hash()は、PHPの組み込み関数で、パスワードを安全にハッシュ化するために使用されます。この関数は、与えられたパスワードを一方向のハッシュに変換し、そのハッシュを返します。ハッシュ化されたパスワードは、元のパスワードに戻すことができないため、セキュリティが向上します。

password_hash()の具体的な使い方

パスワードのハッシュ化と保存の例

<?php
// ユーザー登録処理を想定
$username = 'newuser';
$password = 'user_input_password';

// パスワードをハッシュ化
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// データベースへの保存を想定(実際のデータベース操作は省略)
$user = [
    'username' => $username,
    'password' => $hashed_password
];

echo "ユーザー名: {$user['username']}\n";
echo "ハッシュ化されたパスワード: {$user['password']}\n";

👇出力結果

ユーザー名: newuser
ハッシュ化されたパスワード: $2y$10$abcdefghijklmnopqrstuvwxyz0123456789/ABCDEFGHIJKLMNOPQ

この例では、新規ユーザー登録を想定して、ユーザーが入力したパスワードをpassword_hash()関数を使ってハッシュ化しています。PASSWORD_DEFAULTオプションを使用することで、現在推奨されている最も強力なハッシュアルゴリズムが自動的に選択されます。ハッシュ化されたパスワードは、データベースに安全に保存できる形式になっています。

password_hash()に関するよくある質問

Q. なぜパスワードをハッシュ化?
A. パスワードをハッシュ化することで、データベースが漏洩した場合でも、実際のパスワードが直接露出することを防ぎます。ハッシュは一方向の変換なので、ハッシュからオリジナルのパスワードを復元することは非常に困難です。
Q. PASSWORD_DEFAULTとは?
A. PASSWORD_DEFAULTは、PHPが現在推奨している最も強力なハッシュアルゴリズムを使用することを指定するオプションです。これを使用することで、将来的により強力なアルゴリズムが推奨されるようになった場合でも、コードを変更せずに最新のセキュリティ推奨事項に従うことができます。
Q. 同じパスワードで違うハッシュ?
A. password_hash()関数は、自動的にソルト(ランダムな文字列)を生成し、それをパスワードに追加してからハッシュ化します。このため、同じパスワードでも毎回異なるハッシュが生成されます。これは、同一パスワードの検出を困難にし、セキュリティを向上させます。

password_hash()が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのpassword_hash()やsetcookie()、htmlspecialchars()、リクエストメソッド、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

setcookie()

クッキーを設定する関数

種類: クッキー

htmlspecialchars()

特殊文字をHTMLエンティティに変換

種類: XSS対策

リクエストメソッド

HTTP通信の種類

種類: HTTP

foreach

配列の要素を順に処理

種類: ループ

$GLOBALS

全てのグローバル変数へのアクセス

種類: スーパーグローバル変数