問題タブ [php-password-hash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - password_hash() はすでにソルトを提供していますが、追加のソルトを生成する必要がありますか?
PHP のネイティブ password_hash() 関数を使用する場合、(私の理解では) 独自のソルトを生成する必要があります (または生成する必要があります)。この例 ( http://www.php.ネット):
現在、sha512 を使用してハッシュし、38,500 文字のソルトを生成しています。(文字数が本当に重要かどうかわからなかったので、とにかく試してみました…ユーザーの登録とログインが成功したように見えますが、これのセキュリティ上の欠陥全体を知りません)このようなもの:
かなり奇妙ですが、暗号化に関しては、学ぶべきことがたくさんあります。(ここにソルトの1つへのリンクがあります https://shrib.com/F7lB9Ycf)さらにソルトを追加する場合(「はい」と言う場合は、もう一度ソルトします)、password_verifyを使用してソルトを追加するにはどうすればよいですか()?
助けてくれる人に前もって感謝します!
php - PHP password_hash 関数の値が文字列ごとに異なる
password_hash() PHP関数を使用してユーザーパスワードをハッシュしようとしていますが、この関数は定数ではなく作業ハッシュです。
4回目のテスト結果
java - Java を使用して、PHP で password_hash を使用してハッシュされたパスワードを検証する
HTTP 要求を Java Web サービスに送信する PHP ベースの Web アプリケーションを使用しています。Java Web サービスは、Oracle データベースで要求されたアクションを実行します。HTTP リクエストでパスワードを送信する前に、password_hash を使用してパスワードをハッシュしたいと考えています。新しいユーザーの作成時にこれを行うと、問題はありません。ただし、このパスワードを使用してログインする必要がある場合、データベースに直接アクセスしてそこに保存されているハッシュを取得できないため、PHP で確認できません。したがって、検証は Java Web サービスで行う必要があります。それは可能ですか?そうでない場合、代替手段は何ですか?使用されているソルトはランダムであるため、ログインに使用されているパスワードをハッシュして送信することはできません。これは、ハッシュに使用されるソルトがデータベースに保存されていないためです。
php - Password_verify がデータベースと一致しない
これに関連する他の質問/回答を見て、回答に合わせてコードを複数の方法で変更しようとしましたが、成功しませんでした。正常に機能する登録フォームがあり、password_hash 関数を使用してユーザーをデータベースに正常に追加します。パスワード フィールドは VARCHAR(255) で、入力するとハッシュ化されて表示されます。
問題はログインフォームにあります。私は一日中さまざまな方法を試しましたが、成功しませんでした。以下は私の現在の login.php スクリプトです。
$error 変数は問題なく動作しますが、password_verify のどこが間違っているのかまだわかりません。「一致」ではなく「メールまたはパスワードが無効です」というエラーが表示され続けます。
コードで見逃していたものについて、フィードバックをいただければ幸いです。ありがとう :)
php - データベースからハッシュ化されたパスワードを使用すると、password_verify が機能しない
解決した
登録フォームに奇妙な問題がありました。JS は奇妙なことをしていて、ログイン時に password_verify が機能していたとしても、場合によってはハッシュが異なっていました... コードを修正したところ、動作するようになりました! みんなありがとう!
解決した
password_verify コードが 4 日間も機能しない理由を真剣に理解しようとしていますが、本当に混乱して怒っています...
まず、セッションはすでに開始されており、他のすべては問題なく動作していると言わざるを得ません。
しかし、password_verify スクリプトを作成しようとすると、まだ false が返されます...
データベースのフィールドに名前が付けられpassword
、に設定されていvarchar 255
ます。
データベースからのパスワードは次のようになります。
$2y$10$GEw0Ie6r/Udz2hgJVkCy.ut99NY5NE.h8LEvNM1gBizA1tY58iNa6
いいですよね、こうあるべきですよね…
そして、自分のページでデータベースのパスワードをエコーすると、同じように表示されるので、良いです。しかし、私がするとpassword_verify
、うまくいきません。それpassword_verify
は間違っていることを示しています...フォームに入力しているパスワードが正しく、dbパスワードと一致することを100%確信しているため、その理由はわかりません。ただし、機能せず、「DONE」がエコーされません。
echo strlen
60を示しています
echo $dbpassword
ハッシュされたデータベースのパスワードを示します。
echo $passwordsubmitted
フォームから通常入力されたパスワードを表示します。
しかし、このコードを使用すると、動作し、エコーが「DONE」になるため、password_verify が true であることを意味します...
なぜこれが起こっているのか本当にわかりません。助言がありますか?
UPDATE
登録入力は<input type='password' name='password'>
登録から送信されたパスワードは、次のコードでハッシュされます。
php - パスワードをハッシュしようとすると、DB に Null 値が入力される
私は過去にPHPをプロジェクトに少量使用しましたが、パスワードをハッシュすることで何か新しいことを試みています。
別のページには、送信時に checkRegistration.php フォームにリダイレクトする Web フォームがあり、データベースに接続し、ユーザーの値を取得して検証し、それぞれの列に入力します。
これまでのところ、「0」または空として入力されている password_hash 関数によって渡されたものを除いて、渡されているすべての値が正しく入力されています。0 だと思うのですが、正しく処理されておらず、何が間違っているのか疑問に思っていました。
?>
php - パスワードを保存されたハッシュと比較する
これまでの私の理解から (少なくとも私はそう思います)、 password_hash() 関数は、使用中のアルゴリズム、コスト、ソルトに基づいてハッシュを生成します。password_verify は、egpassword_hash($pass, PASSWORD_BCRYPT, array('cost'=>10))
から提供された情報を使用して、検証に必要なすべての情報が含まれているため、返された値が true か false かを確認します。
以前使っていた
$SQL_Query = "SELECT * FROM DB_Table WHERE userName = '".$username."'" AND password = $ID;
これはプレーンテキストで保存されているため機能し、true を返す可能性がありますが、論理的には今回は機能しません。
次のような説明で静的パスワードを使用する同様の質問に出くわしました
私が理解に苦しんでいる概念は、パスワード入力がその時点でページに知られているのではなく、データベースに保存されている場合、パスワード入力をハッシュ値と照合する方法です? 私は最近、私の愚かなエラーである値の保存に関して助けを得ましたが、これは私が望んでいたほどうまくクリックしていないと思います。
authentication - Xenforo パスワード認証の問題
以下は、パスワードに保存されたハッシュです。
$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
次のように Xenforo パスワードを認証しようとしています。
例えば:
私のパスワードは: 123456
私のパスワード保存ハッシュは: $P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0
だから私は認証するために次のコードを書いています:
認証方法を教えてもらえますか?
前もって感謝します。
php - PHP の password_hash を使用してパスワードをハッシュおよび検証する方法
最近、インターネットで偶然見つけたログイン スクリプトに独自のセキュリティを実装しようとしています。ユーザーごとにソルトを生成する独自のスクリプトを作成する方法を学ぶのに苦労した後、私はpassword_hash
.
私が理解していることから (このページの読み取りに基づいて)、 を使用すると、行にソルトが既に生成されていますpassword_hash
。これは本当ですか?
私が持っていた別の質問は、2つの塩を持つのは賢明ではないかということでした. ファイルに直接1つ、DBに1つ?そうすれば、誰かが DB であなたのソルトを危険にさらしたとしても、ファイルに直接ソルトが残っていますか? ここで、塩を保存することは決して賢明な考えではないことを読みましたが、人々がそれを意味することを常に混乱させていました.