パスワード暗号化(ハッシュ化)生成サンプル
.htaccess でベーシック認証を利用する際にパスワードファイル(.htpasswd)に記述する暗号化されたパスワードを生成するサンプルページです。使用しているコードも掲載しています。
更新日:2023年03月20日
作成日:2019年05月10日
パスワード暗号化
.htaccess でベーシック認証を利用する場合、パスワードは暗号化(ハッシュ化)する必要があります。
パスワードを記述する .htpasswd パスワードファイルには、以下のような書式で暗号化(ハッシュ化)したパスワードを記述します。
- ユーザー名(ID)とパスワードは「:(コロン)」で区切ります。
- ユーザー名(ID)とパスワードは、1行に1アカウントずつ記述します。
usr1:X.pQAhaJ00pZk #ユーザー名(usr1)とパスワード(pw1)
関連ページ:
パスワードハッシュ生成サンプル
以下は PHP の crypt() 関数を使って暗号化されたパスワードハッシュを生成するサンプルです。
パスワードハッシュ生成フォーム crypt()
ユーザー名(ID)とパスワード(コロン: 区切り)
user name (id):password
以下が上記パスワード暗号化生成のコードです。
<div class="wrapper"> <h4>パスワード生成フォーム crypt() </h4> <?php $id = ''; $pass = ''; $_POST = checkInput( $_POST ); if ( isset( $_POST[ 'id' ] ) ) { $id = $_POST[ 'id' ]; } if ( isset( $_POST[ 'pass' ] ) ) { $pass = $_POST[ 'pass' ]; } if ( $id == "" ) { $pwd = ""; } else { $pwd = crypt( $pass, substr( crypt( $id, 'xz' ), -2 ) ); } function checkInput( $var ) { if ( is_array( $var ) ) { return array_map( 'checkInput', $var ); } else { /* PHP 7.4.x で get_magic_quotes_gpc が非推奨になったので削除 if ( get_magic_quotes_gpc() ) { //php.iniでmagic_quotes_gpcが「on」の場合の対策 $var = stripslashes( $var ); }*/ if ( preg_match( '/\0/', $var ) ) { //NULLバイト攻撃対策 die( '不正な入力です。' ); } if ( !mb_check_encoding( $var, 'UTF-8' ) ) { //文字エンコードのチェック die( '不正な入力です。' ); } return $var; } } ?> <div id="form_wrapper"> <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>"> ユーザー名(ID)<input type="text" name="id" class="form-control" placeholder="user name (id) *必須" value="<?php echo htmlspecialchars($id, ENT_QUOTES, 'UTF-8'); ?>" size="50"/> <br/> パスワード <input type="text" name="pass" class="form-control" placeholder="password" value="<?php echo htmlspecialchars($pass, ENT_QUOTES, 'UTF-8'); ?>" size="50"/><br/> <button type="submit" class="btn btn-primary">パスワード生成</button> </form> </div> <p class="margin_top30">ユーザー名(ID)とパスワード(コロン: 区切り)</p> <p class="idpw"> <?php echo htmlspecialchars($id ? $id: "user name (id)", ENT_QUOTES, 'UTF-8') . ':' .htmlspecialchars($pwd ? $pwd: "password", ENT_QUOTES, 'UTF-8'); ?> </p>
パスワードハッシュ生成フォーム password_hash()
以下は PHP の password_hash() 関数を使って暗号化されたパスワードハッシュを生成するサンプルです。
ユーザー名(ID)とパスワード(コロン: 区切り)
user name (id):password
以下が上記パスワード暗号化生成のコードです。
<div class="wrapper"> <h4>パスワード生成フォーム password_hash() </h4> <p>以下は PHP の password_hash() 関数を使って暗号化されたパスワードを生成するサンプルです。</p> <?php $id2 = ''; $pass2 = ''; $_POST = checkInput( $_POST ); if ( isset( $_POST[ 'id2' ] ) ) { $id2 = $_POST[ 'id2' ]; } if ( isset( $_POST[ 'pass2' ] ) ) { $pass2 = $_POST[ 'pass2' ]; } if ( $id2 == "" ) { $pwd2 = ""; } else { $pwd2 = password_hash( $pass2, PASSWORD_BCRYPT ); } ?> <div id="form_wrapper"> <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>"> ユーザー名(ID)<input type="text" name="id2" class="form-control" placeholder="user name (id) *必須" value="<?php echo htmlspecialchars($id2, ENT_QUOTES, 'UTF-8'); ?>" size="50"/> <br/> パスワード <input type="text" name="pass2" class="form-control" placeholder="password" value="<?php echo htmlspecialchars($pass2, ENT_QUOTES, 'UTF-8'); ?>" size="50"/><br/> <button type="submit" class="btn btn-primary">パスワード生成</button> <input type="hidden" name="scroll_top" value="" class="st"> </form> </div> <p class="margin_top30">ユーザー名(ID)とパスワード(コロン: 区切り)</p> <p class="idpw"> <?php echo htmlspecialchars($id2 ? $id2: "user name (id)", ENT_QUOTES, 'UTF-8') . ':' .htmlspecialchars($pwd2 ? $pwd2: "password", ENT_QUOTES, 'UTF-8'); ?> </p>