2016-09-28 5 views
0

に塩とsha512whirlpoolとパスワードを検証次のようになりますMySQLのテーブルがあれば、SQL文がパスワードを検証することです何のmysql

select * from password_table 
where user_id = 1 
and password = shal(`salt` + 'password') 
order by id desc 
limit 1 

なかったです何かを返す。このアルゴリズムはsha512のワールプールです。 PHPで

それはこのように書きます:

hash('sha512', hash('whirlpool', $password));

それは、SQL文で行うことができない可能性があります。

+3

ユーザーのパスワードを保護するために単純なハッシュ関数を使用しないでください。 PBKDF2、bcrypt、scrypt、Argon2などの強力なハッシュスキームを使用する必要があります。コスト係数/反復回数が高いことを確認してください。 1回の反復で少なくとも100msかかるようにコストを選択するのが一般的です。詳細:[パスワードを安全にハッシュする方法](http://security.stackexchange.com/q/211/45523) –

答えて

1

ソートされたハッシュを検索できないため、またほとんどのデータベースが適切なハッシュ関数を提供していないため、SQL文でパスワードを安全にハッシュして検証することはできません。

代わりに、開発言語のBCrypt、SCrypt、PBKDF2などのハッシュ関数を使用してください。検証のために、最初にusername/idのみでハッシュを検索し、その後、見つかったハッシュを開発言語で再度確認してください。

関連する問題