PHPライブラリphpassの使い方と実装方法について

このQ&Aのポイント
  • 会員ごとにIDとパスワードをmysqlに保存し、phpassを利用してパスワードを保存する方法について詳しく解説します。
  • プログラミング初心者でも分かりやすい実装方法を紹介し、ストレッチとソルトを使用したパスワードの保存方法を解説します。
  • さらに、参考になる書籍もご紹介いたします。
回答を見る
  • ベストアンサー

PHPライブラリphpassに関して詳しいサイト

こんにちは。いつもお世話になっております。 会員サイトページを作る練習をしています。 phpassと言うとても便利そうなライブラリに辿り着いたのですが、使い方が分かりません。 やりたい事は基本的なことで、 「会員ごとにIDとパスワードをmysqlに保存する。 パスワードの保存時に、phpassを利用する。(ストレッチとソルトでパスワードを保存する)」 なのですが、詳しい説明のあるサイトに出会えません。書籍も見つけられませんでした。 http://gihyo.jp/dev/serial/01/php-security/0040の記事は拝見したのですが、 分かりませんでした…… 詳しく実装方法に近い説明をしているサイトをご存じありませんでしょうか。書籍でも構いません。 もし、そのようなサイトがないのでしたら、 何を勉強をすれば上記のサイトを理解できますでしょうか。 宜しくお願いします。

  • PHP
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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関数と比べて優位差はないかと思いますので、情報のないこちらのライブラリを使う必要は感じないというのが正直な感想です。 ※ライブラリを使う方がよいと言うのは、必要な機能が標準関数などでは実現できず、自作するのと比べれば実績のあるライブラリを使用した方がよいという意味合いだと思いますので、既に用意されている機能を使わずにライブラリを使う必要はないと個人的には思います。 練習頑張ってください。

nike_bmura
質問者

お礼

再びの回答、ありがとうございます! わざわざ別のライブラリまで提示していただき、とても助かりました。検討してみます。 諦めずに少しずつ頑張りたいと思います。本当にありがとうございました!! とても迷ったのですが、cashmereRX さまをベストアンサーに選ばせていただきます。お二人からとても有益な情報をいただき、心苦しいのですが……すいません! 本当にありがとうございました。

その他の回答 (3)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

>ライブラリを使った方が安全 はい。なのでpassword_hashが標準装備されました。「どのライブラリがいいのか」すら悩まなくていいです。 定期的に公式マニュアルで追加された関数などチェックすべきです。削除されたり非推奨になったりするものもありますしね。

nike_bmura
質問者

お礼

>なのでpassword_hashが標準装備されました。 なるほど。納得しました! 削除や非推奨、とても怖いです。対応に遅くなりそうで。マニュアルをきちんと読めるようになりたいです。 再びのコメント、本当にありがとうございました!

回答No.2

shimix様が仰っている通りphpでパスワードをhash化したいのであれば、php5.5以上のバージョンが条件になりますがpassword_hash関数を使うべきだと思います。 ソルトは手動or自動で設定できますし、ストレッチングに関しては普通に一定時間の処理時間になるまでpssword_hash関数をループしてあげればよいだけかと思います。 password_hash関数のphp.netにその辺りも記載がありますので、ご確認いただければと思います。

参考URL:
http://php.net/manual/ja/function.password-hash.php
nike_bmura
質問者

お礼

お答えありがとうございます。 php5.5以上が必要なんですね。ローカル環境は5.5以上なのですが、構築しようと思っているロリポップがphp5.4です…… shimix様のお返事にも書いたのですが、セキュリティ面はライブラリの方が安全性が高いと言う話を読み、ライブラリを使いたいな、と思ったのです。 とにかく、今は教えていただいたサイト、熟読してみます。 本当にありがとうございます。

nike_bmura
質問者

補足

補足コメントから失礼いたします。 password_hash凄くシンプルですね。驚きました。 こちらで実装できるか頑張ってみようと思います。 ありがとうございました!

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

どうしても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

nike_bmura
質問者

お礼

お答えありがとうございます。 ライブラリを使おうと思ったのは、セキュリティの勉強は一朝一夕にできるものではなくライブラリを使った方が安全だとの記事を読み、できればphpassを使いたいな、と思っております。 もちろんセキュリティの書籍は買いましたがまだ届いていません…… (少し古いですが『安全なWebアプリケーションの作り方』を買いました。) 今、教えていただいたサイトを拝見しております。理解力が乏しく、少々時間がかかりそうですが、頑張って読んでみます。本当にありがとうございます。

nike_bmura
質問者

補足

お礼コメントの後に、補足で失礼いたします。 サイト読み終わりました。たぶん、理解できたと思います。 こんなに簡単に設定できてしまっていいんですか!? と驚きで一杯です。 動かすサーバーのPHPバージョンが5.4なので、使えないとは思うのですが、ローカル環境ではできるので、コチラで構築してみようと思います。 本当にありがとうございました!

関連するQ&A

  • GDライブラリで線グラフを作りたいのですが

    PHP+MySQL+GDライブラリで折れ線グラフを実現したいと思っています。全くの初挑戦で、いろいろと調べてみたのですが良い資料が見つかりません。 参考になるサイトや書籍などがありましたらおしえてください。

    • ベストアンサー
    • PHP
  • PHP会員サイト(認証機能)

    ログイン→(ID、パスワードで振り分け) 会員ページまたは管理者ページ 会員ページではブログやコメントなどを公開 (複数ページ有、各ページでID、パスワードのセッション確認) 管理者ページでは会員登録、削除、更新など (各ページでID、パスワードのセッション確認)) データベース MySQL 上記のような会員サイト(PHP)をお持ちの方いませんか? 無料もしくは格安で譲っていただける方いませんか? 無料でそのようなサイトがあれば教えて下さい。 (レンタルサーバーで使用可能なもの)

    • 締切済み
    • PHP
  • php パスワード 暗号化

    phpの会員サイトにてパスワードの暗号化を実装したいと思い、投稿させていただきました。 会員の人はパスワード変更→暗号化でDBに登録。 変更したパスワード(暗号化されている)でログインという流れを作りたいのですが、 暗号化でDBに登録まではできましたが、ログイン認証で一致せず困っております。 どなたか教えていただけないでしょうか? 例: <input type="password"name="password" value="1234"> $pass = $_POST[pass]; $password = crypt($pass); $passwordをDBに保存。 その後ログアウトし、ログインのパスワードで1234を入力すると「一致しません」となります。 login認証の際にどのように実装してよいのかわからず困っています。 また、上記の内容にてセキュリティ上に問題がありましたらご指摘お願いします。

    • 締切済み
    • PHP
  • PHP+Mysqlによる会員制サイト

    PHP+Mysqlを活用した会員制サイトを構築しようと 考えているのですが、どちらも全くの素人の為 どのような本を購入した方が良いのか分かりません 要望としては 1.登録者はメールアドレスを入力する 2.システムから入力されたメールアドレスへ正式登録案内のURLを送る(24時間以内有効) 3.登録者はURLへアクセスし、名前、住所などの詳細プロフィール、ID(IDはメールアドレスでも良いかなと)、パスワードを入力して登録完了 4.ログイン時は、「**さんようこそマイページへ!」などの会員登録者専用画面を表示する またセキュリティ面も配慮したい為、登録者パスワードはMD5などの暗号化形式で暗号化をするようなイメージを考えております また各登録者がログインし、可能であればphp掲示板や簡易アップローダなどの実装も考えております 今まで自身で探した本の一覧です 実践マスターPHP+MySQL―PHP4/PHP5対応 パーフェクトPHP PHPライブラリコレクション かんたんプログラミング 改訂3版 基礎PHP ノン・プログラマのためのPHP入門 10日間コース PHPによるWebアプリケーションスーパーサンプル 第2版 PHPによるWebアプリケーションスーパーサンプル活用編 第2版 PHPの絵本 よくわかるPHPの教科書 つくって覚えるPHP入門 要望が多すぎて大変失礼だと存じ上げますがどうぞよろしくお願いいたします 今まで自身で探した本の一覧です

    • ベストアンサー
    • PHP
  • WordPressは会員管理に適するか

    前回こちらで投稿フォームはWordPressで作成した方がいいとお聞きしました。もう少し詳しく調べるとmysqlというのが出てきます。 こちらは投稿した内容をmysqlに順次保存するものだと思っていました。このサイトでも質問や回答はmysqlに保存されるという意味で考えていました。ところがよくよく考えてみれば会員管理こそmysqlでする方が当たり前ではないでしょうか。 ということで会員情報と投稿された記事は両方ともmysqlで管理するものなのか、そこのところを教えて下さい。

    • ベストアンサー
    • HTML
  • PHPとMySQLなどのDBを学ぶのにオススメの本

    PHPとMySQLなどのDBをもっと学んで 自身のアイデアを形にしたウェブサイトづくりを 行いたいと考えております。 会員サイトや、口コミサイトなどなど… なかなかそれを学べる場がなく、 書籍を中心に行いたいと考えています。 書籍コーナーに行きましたが かなりの種類があり、どれを手にとればよいのか わかりません。 そこでオススメの本など お教えください

  • 会員制サイトのセキュリティについて

    ある会員制のサイトを作っているのですが、ログイン部分やセッションなどについて、今ひとつ自信がないので質問させていただきます。 1.ユーザー名とパスワードを登録してもらい、パスワードはMD5で暗号化した上で、MySqlに保存。 2.ユーザー名とパスワードを入力してもらい、MySqlの内容と照合し、正しかったら、ユーザー名をセッション変数に入れる。 3.サイト内各ページで、セッション変数によって本人確認を行う。 以上のような仕組みなのですが、何か問題点はありますでしょうか。 特に3番目でセッション変数にそのままユーザー名を入れるというのは、なりすましをされる危険性などはないでしょうか。 ご回答宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP> フォームで受けた外部サイトの不安。セキュ

    宜しくお願いします。 <WinXP、PHP5、MySQL、Smarty、PEAR>にて開発中 簡単な会員専用ページを開発しております。 会員専用ページの一部は、第三者も閲覧できる箇所があります。 (会員のデジカメの撮影画像をサムネイルにて一覧表示させる)のような構成です。 もし、会員が、自分の管理画面で「オススメのサイト」と題した項目に、 外部サイトのURLを保存できる機能があったとします。 フォームにURLを入力し、POSTしてMySQLに格納します。 そして、 第3者が、そのオススメする外部URLをクリックするとジャンプするようにします。 そこで質問です。 悪意のある会員が、自前の不正な外部サイトを用意した場合、 第3者はそれに気づかずにクリックすることになりますが、 PHPでこのような局面を回避できる、技術的な考え方などを回答下さいませ。 それとも、こういったことは防ぎようがなく、神経質になる必要はないでしょうか? また、URLをPOSTさせることに対しても不安があります。 正直なところ、マスターとしてはこちらの方が不安です。 抽象的な質問かもしれませんが、何卒宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PostgreSQLの書籍を参考にMySQLで

    初心者ですみません。 これからPHP+MySQLで掲示板を作ろうと思うのですが、データベースは初めてです。 PHPやサイト作成は経験があります。 いろいろなサイトを検索してみたのですが、なかなか詳しくPHP+MySQLで掲示板を作る解説があるサイトがありません。 そこで書籍を買ってみようと思ったのですが、軽く掲示板を作るような書籍はあっても本格的に掲示板を作ることが目的の書籍がありませんでした。 唯一、廃盤になったと思われる「Web掲示板作成で学ぼう!PHP4実践ガイド―PostgreSQL対応 」というのがあったのですが、MySQLではなくPostgreSQL対応版でした。 中身は見ていないのですが、経験者の皆様が予想するとした場合、この書籍を見ながらPostgreSQLのソースをMySQLで代用できると思いますか? ちなみにMySQLにしたい理由は単に借りているサーバーがMySQLにしか対応しておらず、自分のPCにはXAMPPが入っているからです。どちらが優れているとかはわかりません。 あと、何かの書籍で見たので記憶が曖昧ですが、MySQLとPostgreSQLのどちらでも使えるクラス群?関数群?みたいなライブラリがあるようなのですが、このライブラリを使えば上記書籍のPostgreSQLでもMySQLで対応できると考えて良いのでしょうか? ライブラリ名とか覚えてなくてすみませんが・・・。 お手数ですがよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 閉鎖されるサイトを丸ごと保存したい

    Windows7を使っています。 よく見ている個人サイトのいくつかが近々閉鎖されるそうです。 パスワードの記事が入っていたり、イラストがいっぱい入っていたりと、ちょっとした動く部分(動画?)があったりと、各々工夫されたサイトです。 閉鎖されても保存をすれば、ずっと見られると聞いたのですが、1ページ1ページ「名前を付けて保存」するのはかなり大変です。 そこで、サイトを丸ごと保存できる「巡集」というソフトを教えてもらったのですが、残念なことに「拒否」されてしまい、保存できませんでした。 詳しくない人間でも使えて、サイトを全部(パスワード記事なども含めて)保存できるソフトって、ご存じの方はいらっしゃらないでしょうか?

専門家に質問してみよう