【解決方法】C# Windows Forms アプリケーションのログイン情報を適切に保護する

プログラミングQA


こんにちは、

ユーザーのログインを必要とする Windows フォーム アプリケーションを作成しています。以前にもこれを実行したことがあります。 前回使用した方法は、プログラムの要求に応じて暗号化/復号化できるファイルにユーザー名とパスワードを保存することでした。 ただし、次のようにプログラムにキーをハードコーディングしました。

C#
private RijndaelManaged rm = new RijndaelManaged();

        byte[] key =
            { 12, 84, 46, 77, 09, 27, 99, 65, 92, 84,
              52, 57, 35, 95, 75, 57 };

        byte[] IV =
            { 12, 84, 46, 77, 09, 27, 99, 65, 92, 84,
              52, 57, 35, 95, 75, 57 };

これは明らかに悪い考えです。 プログラムの外部でキーを安全に保存/配布するにはどうすればよいですか?

解決策 2

私は上記の両方のコメントに同意しますが、別のオプションは、暗号化されたユーザー名パスワード トークンのみを保存することです。 ユーザー名とパスワードをファイルに個別に保存しないでください。 それ自体がセキュリティ上のリスクです。 トークンを使用すると、ユーザー名/パスワードを別個のエンティティとして使用する代わりに、トークンに対して検証できるようになります。

解決策 3

自分でハッシュ パターンを選択することもできます。
MD5(ユーザー名+”$!#$”+パスワード+ユーザー名.Reverse) – たとえば。
有効なハッシュのみを保持すると、指定されたユーザー名とパスワードを認証できます。 ハッシュ パターンは隠されていませんが、パターンが特殊な場合は解読がより困難になると思います。

コメント

タイトルとURLをコピーしました