2017-06-08 7 views
0

データベースの列にプレーンテキストが埋め込まれています。管理者はパスワードをデータベースにプレーンテキストとして保存することは危険すぎると判断しました。問題は、その列のすべての値を暗号化されたテキストに転送し、もちろんC#のビジネスロジックを変更する必要があることです。プログラム上で知っているから、データベースから暗号化された値を読み取って、データを解読して処理しなければなりません。もちろん、新規ユーザーが登録されていれば、データベースにecrypted値を格納する必要があります。 (しかしこれは問題ではありません) ソフトウェアの動作を損なうことなく、この列全体を暗号化するための適切かつ安全な方法(既にプレーンテキストとして使用されています)がありますか?プレーンテキストの暗号化の問題

+4

暗号化されたパスワードを保存するのと同じように悪いです。 * hashed *パスワードを保存する必要があります:[SQL Serverにパスワードを保存する](https://stackoverflow.com/questions/876342/storing-passwords-in-sql-server) –

+0

DBからパスワードを使って何かをしたことがありますかそれらを検証する以外に? (たとえば、顧客に現在のパスワードを電子メールで送信したことはありますか?) – mjwills

+1

パスワードの暗号化/復号化の代わりに、asp.netの 'PasswordHasher'クラスを使用して、入力されたパスワードのハッシュバージョンを生成します。また、正確に同じハッシュを再度生成せずに、クラスを使用してパスワードを確認することもできます。この記事を参照してください:[PasswordHasher](https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.passwordhasher(v = 1010).aspx) –

答えて

0

1)hash_pwdのような新しい列を作成します。

2)現在のパスワードに相当するハッシュ値で入力してください。

3)平易なパスワードではなく、ハッシュで動作するようにソフトウェアを変更します。

4)単純なパスワードを使用して古い列を削除またはクリアします。

PS:パスワードの単純ハッシュ(MD5/SHA)を保存するのではなく、HASH(plain_password + "my_string")のような静的文字列を追加することをお勧めします。これはハッシュ辞書のハッキングからデータベースを保護します。 HASH("123456")の結果を知り、パスワード123456を使用しているすべてのユーザーを見つけることができます。

+0

安全なハッシュにMD5またはSHA1を使用することはまったく良い考えではありません。好ましくはランダムな塩を用いた強力なハッシングアルゴリズムを使用する。 – quinz

関連する問題