問題タブ [salt]
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.
hash - パスワードの塩漬け:ベストプラクティス?
私はいつも興味があります...ハッシュ用のパスワードをソルトするときは、プレフィックスとポストフィックスのどちらが良いですか?なんで?それとも、あなたが塩を飲む限り、それは重要ですか?
説明:データベースに保存するためにパスワードをハッシュする前に、パスワードをソルトする必要があることを(願わくば)今では知っています[編集:最近JeffAtwoodに起こったことのようなことを避けることができます]。通常、これは、ハッシュアルゴリズムを通過する前に、ソルトをパスワードと連結することによって行われます。しかし、例はさまざまです...いくつかの例では、パスワードの前にソルトを追加します。いくつかの例では、パスワードの後にソルトを追加します。塩を真ん中に入れようとする人もいます。
では、どちらがより良い方法であり、なぜですか?ハッシュ衝突の可能性を減らす方法はありますか?私のグーグルは、この主題についてまともな分析をしていません。
編集:素晴らしい答えの人々!申し訳ありませんが、答えは1つしか選べませんでした。:)
mysql - hash('sha256', $salt . $password) を使用して mySQL ユーザーを作成するにはどうすればよいですか?
私は何かが欠けているに違いない。
選択のみのトランザクション用にデータベース ユーザー アカウントを設定したいのですが、mysql では、ユーザー アカウントの作成時にパスワードのハッシュ方式を選択できません。
これは失敗します:
エラー 1064 (42000): SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の 'hash('sha256', 'salted-myfakelongrandompasswordstring')' 付近で使用する正しい構文を確認してください。
これは合格します:
phpinfo ページを確認したところ、sha256 ハッシュ エンジンは既に有効になっています。
mysql のデフォルトのハッシュ アルゴリズムを変更する方法はありますか、それとも SQL の構文が間違っているだけですか?
security - 暗号化されていないパスワード ユーザー ベースの暗号化されたパスワード
少し前に、私は新しいプロジェクトに参加しました。それはかなり長い間開発中でした。私が驚いたのは、すべてのユーザーのパスワードが暗号化されていない形式で保存されていることです。
私はこれの巨大なセキュリティ上の脆弱性を私たちの経営陣に説明しました - 彼らはそれに同意し、プロジェクトをより安全にしたいと考えているようです. チームメンバーも同意見です。
システムには約 2 万人のユーザーがいます。
実際には、暗号化されていないパスワードを暗号化された形式に移行するという、これを機能させるのは非常にストレスの多い作業です。何か問題が発生すると、プロジェクトの災害につながる可能性があります。
どうすればこのストレスを下げることができますか? バックアップ?単体テスト(統合テスト)?
mysql - パスワードハッシュとソルティング-これは良い方法ですか?
パスワードのハッシュとソルトを処理するさまざまな方法について少し調査またはグーグルで調べていたところ、次の興味深いリンクに出くわしました。
さて、これが本質的に提案するのは、ハッシュ用とハッシュチェック用の2つのユーザー関数の作成です。
ソルトは疑似ランダムですが、実際にはパスワードに基づいています(私を悪いと思いますか?)。
ハッシュ関数はまた、ハッシュ文字列の中にソルトを疑似ランダムに「振りかけ」ます。
ハッシュチェック機能は、塩の振りかけを元に戻し、実際のハッシュチェックが行われます。
これで、パスワードハッシュごとに一意のソルト=良いだけでなく、パスワードをハッシュしてdb関数に格納されたソルトを作成するロジックがある=悪いかもしれないことも知っています。
ソルトが明確ではなく、ユーザー名、ユーザーID、生年月日などの一貫した値に基づく必要がないという考えは気に入っていますが、前述したように、実装については疑問があります。
では、「ベストアプローチソリューション」に対する人々の意見やアイデアは何でしょうか。
asp.net - データベースではなくコードにソルトを保存する
ソルトのベスト プラクティスに関していくつかの素晴らしい議論がありましたが、パスワードごとに異なるソルトを生成し、それをパスワードと一緒にデータベースに保存することが圧倒的に推奨されているようです。
しかし、ソルトの目的を正しく理解すれば、レインボー テーブル アタックによって危険にさらされる可能性を減らすことができます。したがって、データベースに保存することで、ユーザーごとに変更するのが最適であることは理解していますが、ソルトがデータベースの近くにない場合はどうなりますか? コードに 1 つのソルト値を格納すると (Web サーバーではコンパイル済みの dll になります)、攻撃者が何らかの形でデータベースにアクセスできた場合、同じ目的にはなりませんか? より安全であるように思えます。
c# - ストリームでの C# MD5 ComputeHash のソルト
MD5.ComputeHash(Stream) をソルトする方法がわかりません。HashAlgorithm にバイトを挿入する方法がありませんか?
ストリーム計算を実行する前に ComputeHash(byte[]) を実行しようとしましたが、当然のことながら、効果はありませんでした。(ファイルの変更以外に) アイデアはありますか?
御時間ありがとうございます。
補遺 もう少し具体的に言うと、ストリームを使用して、メモリにロードしたくない大きなファイルのハッシュを取得したいと考えています。
php - 私の認証暗号化は良いですか?
だから私はPHPでの暗号化についてたくさん読んでいます。ログイン情報を安全に保存するための本当に良い方法が何であるか正確にはわかりません。
ただし、次の関数は私が思いついたものです。
私はそれを正しい方法でやっていますか?これは、ユーザー名と組み合わせたパスワードの認証、および生成されたハッシュをデータベースに保存されているハッシュと比較してログインを確認する機能に使用されます。
mysql - MySQLクエリのSHAソルト
クッキーを設定しています。何かのようなもの:
今124は私が欲しい私のIDです。したがって、MySQLテーブルで、次のようなクエリを実行しようとしています。
SQLクエリに「mysalt」を追加するにはどうすればよいですか?それ以外の場合は正しいIDを取得したいので。