ホームページ >バックエンド開発 >PHPチュートリアル >文字列のハッシュ結果の最初の n 文字をインターセプトして文字列の正確さを比較するのは適切ですか?
もちろん、ユーザーのパスワードを保存するときは完全なハッシュ結果を保存する必要がありますが、ハッシュ結果が非常に長くなり、場合によっては肥大化して見えることがあります。たとえば、単純な Cookie 偽造防止プログラムを作成したいと考えています。そのアイデアは、元の Cookie 値を mcrypt で可逆的に暗号化し、その値にソルトを追加して sha256 を計算し、sha256 の結果の最初の 10 桁をインターセプトして添付することです。最終的な Cookie 値に。検証中に必要なのは、Cookie 値を分割し、前の文字を復号化し、sha256 を計算して最初の 10 ビットを後続の値と比較することだけです。これは安全ですか?
もちろん、ユーザーのパスワードを保存するときは完全なハッシュ結果を保存する必要がありますが、ハッシュ結果が非常に長くなり、場合によっては肥大化して見えることがあります。たとえば、単純な Cookie 偽造防止プログラムを作成したいと考えています。そのアイデアは、元の Cookie 値を mcrypt で可逆的に暗号化し、その値にソルトを追加して sha256 を計算し、sha256 の結果の最初の 10 桁をインターセプトして添付することです。最終的な Cookie 値に。検証中に必要なのは、Cookie 値を分割し、前の文字を復号化し、sha256 を計算して最初の 10 ビットを後続の値と比較することだけです。これは安全ですか?
パスワードのハッシュ値を Cookie に含めないでください。ログインを確認するために追加のトークンを生成できます。
このアプローチは依然として非常に一般的であり、16 ビットの md5 は最初に 32 ビットを計算し、次に中間の 16 ビットをインターセプトすることによって実装されます。もちろん、短すぎる場合は総当たりクラックされることに注意してください。