私はいくつかのコードを調べて、すべてのユーザー入力が mysql_real_escape_string() を介して実行されていることを確認して、SQL インジェクションを防ぎます。PHP の md5() 関数を介して実行されるパスワード入力の場合、 mysql_real_escape_string(0 はまだ必要ですか? エンコーディング プロセスは潜在的なインジェクション攻撃を取り除くように思われます。
2 に答える
MD5はパスワードセキュリティには不十分です-MD5は、簡単にハッキングされる古いアルゴリズムです。パスワードのハッシュにMD5を使用している場合は、何も使用していない方がよいでしょう。現在のベストプラクティスの推奨事項は、bcryptアルゴリズムを使用することです。
mysql_real_escape_string()
mysql_xxx()
残りの関数とともに、現在は非推奨になっています。それらは時代遅れで安全ではないと見なされており、しばらくの間使用が推奨されていません。今後のPHPv5.5では正式に非推奨になりますが、5.5にアップグレードする予定がない場合でも、使用を中止するようにしてください。PHPでmysql_*関数を使用すべきでない理由を参照してください。詳細については。
私が言ったように、MD5は安全ではなく、人々が自分で作成するほとんどのソリューションでもありません。パスワードをハッシュするための最良の解決策は、高品質のライブラリを使用して作業を行うことです。PHP 5.5には、特別に作成されたパスワード処理関数のセットが含まれています。これにより、全体の安全性が大幅に向上します。PHP5.3または5.4で動作するようにバックポートされたこのライブラリのバージョンもあります。このバックポートバージョンは、https ://github.com/ircmaxell/password_compatからダウンロードできます。
現時点では、これはおそらくPHPで利用可能なパスワードストレージに対する唯一の最良の解決策です。ぜひご利用ください。
実際には、イエスとノーです。
RAW md5 ハッシュを生成する --の2 番目のパラメーターを設定する場合にのみ使用する必要があります。mysql_real_escape_string()
md5()
true
そうしないと、次のようなものから返される唯一のデータは、md5($password)
この正規表現に一致する文字列ハッシュになります。これはエスケープする必要/[a-z0-9]{32}/i
はありません。
これらの人は、未加工の md5 ハッシュを悪用した理由と方法を説明しています。