- ベストアンサー
PHPライブラリphpassの使い方と実装方法について
- 会員ごとにIDとパスワードをmysqlに保存し、phpassを利用してパスワードを保存する方法について詳しく解説します。
- プログラミング初心者でも分かりやすい実装方法を紹介し、ストレッチとソルトを使用したパスワードの保存方法を解説します。
- さらに、参考になる書籍もご紹介いたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
お礼ありがとうございます。少し補足させていただきたい点がありましたので、再度回答させていただきます。 まず、php5.5でなくてもphp5.3以上にはcryptというhash関数がありますので、こちらを使うのもありです。説明を読んでいただければ分かりますが、password_hashはcryptのラッパーですので、コチラにしっかりソルトをつけて、総当り攻撃の対策にストレッチングをかけてあげるなどすれば求めるセキュリティのレベルによりますがかなり強固なhashになるかと思います。 http://php.net/manual/ja/function.crypt.php また、以下のircmaxell/password_compatはpassword_hash関数の互換となる機能をもったライブラリですので、コチラを使うのもありかなと思います。 https://github.com/ircmaxell/password_compat phpassというhashライブラリを使った事がないので、少し調べただけですが、恐らく他のhash関数と比べて優位差はないかと思いますので、情報のないこちらのライブラリを使う必要は感じないというのが正直な感想です。 ※ライブラリを使う方がよいと言うのは、必要な機能が標準関数などでは実現できず、自作するのと比べれば実績のあるライブラリを使用した方がよいという意味合いだと思いますので、既に用意されている機能を使わずにライブラリを使う必要はないと個人的には思います。 練習頑張ってください。
その他の回答 (3)
- shimix
- ベストアンサー率54% (865/1590)
>ライブラリを使った方が安全 はい。なのでpassword_hashが標準装備されました。「どのライブラリがいいのか」すら悩まなくていいです。 定期的に公式マニュアルで追加された関数などチェックすべきです。削除されたり非推奨になったりするものもありますしね。
お礼
>なのでpassword_hashが標準装備されました。 なるほど。納得しました! 削除や非推奨、とても怖いです。対応に遅くなりそうで。マニュアルをきちんと読めるようになりたいです。 再びのコメント、本当にありがとうございました!
- cashmereRX
- ベストアンサー率26% (12/46)
shimix様が仰っている通りphpでパスワードをhash化したいのであれば、php5.5以上のバージョンが条件になりますがpassword_hash関数を使うべきだと思います。 ソルトは手動or自動で設定できますし、ストレッチングに関しては普通に一定時間の処理時間になるまでpssword_hash関数をループしてあげればよいだけかと思います。 password_hash関数のphp.netにその辺りも記載がありますので、ご確認いただければと思います。
お礼
お答えありがとうございます。 php5.5以上が必要なんですね。ローカル環境は5.5以上なのですが、構築しようと思っているロリポップがphp5.4です…… shimix様のお返事にも書いたのですが、セキュリティ面はライブラリの方が安全性が高いと言う話を読み、ライブラリを使いたいな、と思ったのです。 とにかく、今は教えていただいたサイト、熟読してみます。 本当にありがとうございます。
補足
補足コメントから失礼いたします。 password_hash凄くシンプルですね。驚きました。 こちらで実装できるか頑張ってみようと思います。 ありがとうございました!
- shimix
- ベストアンサー率54% (865/1590)
どうしてもphppassでないといけないんでしょうか? password_hash/password_verifyではダメなんですかね。 http://php.net/manual/ja/function.password-hash.php http://php.net/manual/ja/function.password-verify.php (5.5未満の場合) http://php.net/manual/ja/intro.password.php
お礼
お答えありがとうございます。 ライブラリを使おうと思ったのは、セキュリティの勉強は一朝一夕にできるものではなくライブラリを使った方が安全だとの記事を読み、できればphpassを使いたいな、と思っております。 もちろんセキュリティの書籍は買いましたがまだ届いていません…… (少し古いですが『安全なWebアプリケーションの作り方』を買いました。) 今、教えていただいたサイトを拝見しております。理解力が乏しく、少々時間がかかりそうですが、頑張って読んでみます。本当にありがとうございます。
補足
お礼コメントの後に、補足で失礼いたします。 サイト読み終わりました。たぶん、理解できたと思います。 こんなに簡単に設定できてしまっていいんですか!? と驚きで一杯です。 動かすサーバーのPHPバージョンが5.4なので、使えないとは思うのですが、ローカル環境ではできるので、コチラで構築してみようと思います。 本当にありがとうございました!
お礼
再びの回答、ありがとうございます! わざわざ別のライブラリまで提示していただき、とても助かりました。検討してみます。 諦めずに少しずつ頑張りたいと思います。本当にありがとうございました!! とても迷ったのですが、cashmereRX さまをベストアンサーに選ばせていただきます。お二人からとても有益な情報をいただき、心苦しいのですが……すいません! 本当にありがとうございました。