• ベストアンサー

パスワード生成

パスワードとソルト(乱数)を組み合わせてハッシュ化し、それをdbに保存するのですよね? ソルトはユーザー毎に違うものにしたいらしいのですが、ソルトの特定はどのようにすればよいのでしょうか? 次回ログインする際、パスワードはユーザーに打ってもらえますがユーザーのソルトまで特定するにはどこかに保存する必要があるのではないでしょうか?

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

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

  • ベストアンサー
回答No.1

「パスワードとソルト(乱数)を組み合わせてハッシュ化」する、ということですと、PHPでは、「password_hash」を利用するのが現在のベストプラクティスのようです。 https://www.php.net/manual/ja/function.password-hash.php 上記の関数でハッシュ化したパスワードは、以下の関数でチェックすることができます。 https://www.php.net/manual/ja/function.password-verify.php どのように使うか、については、以下のQiitaの記事が詳しいです。 https://qiita.com/rana_kualu/items/3ef57485be1103362f56 もう少しアルゴリズム等について踏み込んだ解説は下記のブログ記事が参考になります。 https://blog.ohgaki.net/password_hashing

dhtfyjh
質問者

お礼

ご丁寧にありがとうございました

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

はい。ご推察の通り、ソルトは、ハッシュ化パスワードと共にDBに保存します。 それで問題ありません。

関連するQ&A

  • ユーザーパスワードのDBの格納について

    あるメーカーのソフトウェアを使用しており、Webからログインするときのユーザ名、パスワードがユーザーデータベースのテーブルに平文で格納されています。 そのソフトで使用しているデータベースはSQL Server 2008R2になります。 平文で格納されているのが気になっており、SQL Server 2008R2を使用してテーブルに格納するパスワードをハッシュ+ソルト+ストレッチングして格納すること仕組みとして可能かどうか気になっております。 もし仕組みとして可能な場合、Webからログインした際にユーザーが入力したパスワードをハッシュ+ソルト+ストレッチングして、テーブルに格納されているハッシュ+ソルト+ストレッチングしたパスワードと比較して認証を行うようにプログラミングは可能でしょうか。

  • パスワードハッシュ化時の乱数のsaltについて

    パスワードのハッシュ化について | http://okwave.jp/qa/q6377700.html で質問したものです。 ユーザー登録するwebサイトを構築する予定です。パスワードはsaltをつけてsha256でハッシュ化して保存しようと思っています。 saltはランダムにしたほうが良いとの情報を得ましたが、ログイン認証をする際にそのsaltがわからなければならないと思います。ランダムなsaltはDBに保存してしまうんでしょうか?それとも他の項目(登録日時など)をキーにハッシュ化したものを使う、とかですかね? ランダムなsaltの管理方法を教えてください。 ※ asp.net(C#)とoracleで構築予定です。

  • phpのパスワードのハッシュ化について

    phpで会員サイトの作成を学習しています。 PDOを使用してMysqlサーバーに接続しています。 開発環境はxamppでphp Version 5.5.15を使用しています。 入力フォームにユーザーの情報を入力してもらい、 データベースに格納する際、 基本的なセキュリティ要件として パスワードをハッシュ化する必要があるということを こちらのサイトで(http://php.net/manual/ja/faq.passwords.php) 知りました。 ハッシュ化については初耳で、いまいちハッシュアルゴリズムの種類による違い等はまだ理解しきれていないのですが、 PHP5.5.15を使用しているので、パスワードのハッシュアルゴリズムは 上記サイトに載っているようにpassword_hashを使用するのが今のところ最善なのでしょうか? また、ハッシュ化されたパスワードの認証についてですが、 ログイン画面でパスワードを認証する際、 ユーザーが入力したパスワードをハッシュ化して 該当レコードのハッシュ化されて保存されたパスワードと 同じであれば認証が成功するという認識で正しいでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • なぜパスワードが分かる・・・。?

     ココや、ヤフーなどのフリーメールのサービスなどで、IDとパスワードが必要な場合ってあるかと思います。 もしパスワードを忘れたら、メールで折り返し連絡がくるかと思います。 そこで気になるのですが、普通パスワードって、パスワードをハッシュ関数か何かで暗号化したものを保存しておき、ユーザーが入力したパスワードをハッシュ関数か何かで暗号化して一致するか同かを調べるとどこかで聞いた気がします。 そうだとすればなぜパスワードが分かるのでしょうか?

  • パスワードのハッシュ化について

    ユーザー登録させるようなwebサイトを作ることになりました。 ググッたところパスワードはハッシュ化させDBへ、っていうのが通常らしいんで、 sha256を使って変換しようと思います。 質問(1)ハッシュ化させる元の文字列には文字数など何か制限はないんでしょうか。 質問(2)ハッシュ化させるときにくっつけるsaltは何桁くらいにするのが一般的なんでしょうか。 教えてください。

  • パスワードを保存するについて

    簡単な質問かもしれませんがご回答よろしくお願いいたします。 社内の共有のパソコンにログインする際にIDとパスワードを入力後「パスワードを保存する」にチェックを付けて、OKを押してしまいました。 しかし、違うユーザーでログインしたいのですが保存されているためか、ユーザーIDとパスワードのアラートが出てこなくなってしまったため何かと問題があり困っています。 パソコンに保存されてしまった、IDとパスワードを消す方法を知っている方がいらしたら教えていただけないでしょうか?よろしくお願いいたします。

  • データベースに登録してあるパスワードを画面に表示

    データベース(MYSQL)に登録してあるパスワードを暗号化(ハッシュ化)して保存してあります。 それをPHPに表示させる際どのようにもとのパスワードに戻して表示させるかがわかりません。 もとのパスワード abcd とする。 ハッシュ化したものを仮に123456789とする。 データベース上では123456789となっているが PHP上ではabcdとパスワードを表示させる方法がわかりません。 やりたいのは、 PHPのシステムにログインしている状態で別のシステムにリンクで飛んだ際、 「ユーザ」「パスワード(abcd)」で自動ログインさせたいのです。 ※ユーザは暗号化していないので「ユーザ」データを引き継いでいく事ができるのですが パスワードが暗号化されている為、どのように表示させたら良いのかが分からないのです。 <a target="_blank" href="http://192.***.**.****/●●●/portal/?action=ALJLoginUser&username=<?php echo htmlspecialchars($_SESSION['GO_SESSION']['username']); ?>&password=<?php echo htmlspecialchars($_SESSION['GO_SESSION']['password']); ?>" > 上記ですと]['username']は表示できますが['password']は空になってしまいます。 どのようにしたら良いのでしょうか? どうぞ宜しくお願い致します。

  • パスワードをハッシュにしてDBに収納って無意味では

     PHPとMySQLを勉強中のものです。  教科書本の中でサイトへのログインパスワードなどは、ハッシュにするなどしてデータベースに入れた方が安全だとありました。  ハッシュにするというのは今では当たり前のようですが、これって意味あるのかな?という疑問もあります。  おそらくデータベースがハッキングされるなどして覗かれた時にパスワードを漏らさないためだと思うんですが、そもそもデータベースがハッキングされてる時点で終わってますよね?  サイトへのログインなんてしなくても、直接データベースを触れる状態なんだから、ログインパスワードなんて必要ないと思うんですが…。  データベースそのもののパスワードをハッシュ化してどこかに収納するというなら分かるんですが、データの一部でしかないログインパスワードをハッシュ化して意味あるんでしょうか?

  • パスワードを暗号化して保存

    VB.NET(VS2010)で開発しています。 パスワードを暗号化して保存したいのですがいまいち方法が わかりません。 当たり前ですがパスワードは任意で変更可能です。 それを暗号化して保存、そして次回からは変更されたパスワードを使ってDBへログイン。 暗号化したもの単体で複号出来ないと困ります。 なるべくiniファイルではなくVS2010やVS2008の機能(リソース?)で実装したいです。 よろしくお願いします。

  • セッション変数にパスワードを保持しても良い?

    ユーザーログイン機能について、取得した全てのDBユーザーテーブル情報を、セッション変数$_SESSION['★★']に格納しているサンプルコードがありました(2つ程見かけました) ■質問 ・セッション変数にパスワードを保持しても良いのでしょうか? ・生成した予測不能な文字列(セッションキー?)が破られたらどうしようもないので、そういう意味ではセッション変数には何を保存しても良いのでしょうか? 単に保存先が、セッション変数かDBかの違いでしかない? ・あるいは、セッション変数には必要最低限なもの、もしくはセキュテリティに関係ないもの、のみ保存して、その都度DBに問い合わせた方が良いのでしょうか? でも、これって非効率的?

    • ベストアンサー
    • PHP

専門家に質問してみよう