ユーザーとパスワードをハード コーディングすることは、次の 3 つの理由で好ましくありません。
- テキスト エディタでバイナリ ファイルを見ると何も理解できないため、セキュリティについて誤った印象を与えますが、実際には .NET アセンブリを逆アセンブルするのは簡単なことです。
- すべてのソフトウェア開発者がユーザーとパスワードを知ることを強制します
- これは、ユーザーとパスワードのペアを変更するには、アプリケーションの再コンパイルも含む新しいデプロイが必要であることを意味します
この問題に対する魔法のような解決策はありません。この場合のセキュリティは、セキュリティを担当する人々の規律と善意にかかっています。
私の会社では、次のようになります。
- ソフトウェア開発者は本番データベースにアクセスできず、ユーザーとパスワードを知らないことは間違いありません。
- ソフトウェア管理者はユーザー名とパスワードを持っており、運用
web.config
マシンにアプリケーションをデプロイするときに、開発部門からの情報を自分の秘密とマージします。
- ソフトウェア管理者を除いて、他の人は本番マシンにアクセスできません
でユーザーとパスワードを暗号化するweb.config
ことは、非常に役立ちます。最終的には、暗号化キーを明確な形式でアプリケーションにハードコーディングする必要があり、逆アセンブルの問題に戻ります。
私の意見では、非常に優れた解決策は、私の会社で起こっていることと、明確なキーと難読化による暗号化を組み合わせることです。
一般的な考え方は次のとおりです。
- アプリケーション管理者について私が言ったことを考えてみましょう
- マイナーな詳細を 1 つ変更します。ユーザー名とパスワードは明確ではありませんが、暗号化されたフォームは知っています。
- 暗号化されたユーザー名とパスワードを解読する鍵を持っているのは開発者だけであり、実行時にそれを使用します。
- 開発者はアセンブリを難読化して、誰もがバイナリをリバース エンジニアリングし、クリア キーを見つけ、アプリケーション管理者に暗号化されたユーザー名とパスワードが何であるかを尋ねる価値がないようにする必要があります (外出中にクマを飲みながら)そして、すべてをまとめます
つまり、誰か (おそらく会社の所有者またはその他の責任者) が「greasemonkey」アプリを使用してユーザー名とパスワードを暗号化し、その結果の暗号化をアプリケーション管理者に提供する必要があります。
最初に所有者に資格情報の最初のペアを与えたデータベース管理者がいることも忘れないでください。所有者はパスワードを変更してから、私が設定したすべてのことを行う必要があります。
結論として、多くの解決策があり、いくつかは他より奇抜です。それはツールやコードだけでなく、規律にもあります。