理論的質問:機密データをC#ソースコード内で保護していますか?
私は、インターネット上の外部mySQLサーバーにユーザーの送信データを返信するC#Windowsフォームアプリケーションを持っています。 mySQLサーバーのユーザー名とパスワードが表示されないようにするにはどうすればよいですか? (例えば、C#exeプログラムを逆コンパイルすることによって)。
敬具
理論的質問:機密データをC#ソースコード内で保護していますか?
私は、インターネット上の外部mySQLサーバーにユーザーの送信データを返信するC#Windowsフォームアプリケーションを持っています。 mySQLサーバーのユーザー名とパスワードが表示されないようにするにはどうすればよいですか? (例えば、C#exeプログラムを逆コンパイルすることによって)。
敬具
短い答え:あなたがすることはできません - あなたがコントロールしていないマシン上で動作するものは等を逆コンパイルすることができ
可能なオプション:
あなたがアプローチを試みる場合がありますclient-cert(SSL標準の一部)を介してクライアントを認証したサーバー側のSSLセキュアWebサービスを使用します。そのwebserviceは、クライアントに代わってDBにアクセスします。
などのサードパーティ認証プロバイダを使用して、誰かがクライアント証明書を盗むまでうまくいきます。 –
@boo解決可能な問題:クライアント証明書を無効にして新しい証明書を発行することができます...ユーザーごとに異なるクライアント証明書を使用することで、 1つ(他のすべての人は、無効化されていることに気づかずに作業することもできます)。 – Yahia
あなたはパスワード管理システムよりも証明書管理システムを開発する方が高価であるため、メンテナンス性の点でユーザーごとのパスワードを発行するよりも、決して悪いことはありません。 –
通常、ユーザーに資格情報の入力を求めたり、アカウントが公開されている場合(たとえば、資格情報が不安定な場合など)、アカウントが許可するものを制限する。
私は、ユーザが提出したデータを、実際にデータベースサーバと通信している別のサービスに渡します。そうすれば、接続の詳細をクライアントから隔離することができます。
できない場合は、クライアントコードで使用されるmySQLデータベース用の制限付きアカウントを作成する必要があります。
クライアントソフトウェアが知っていることはすべてユーザーに知られているという事実を実感してください。
クライアントソフトウェアの使用可能な最小限のインターフェイスを設定します。完全なDBアカウントを公開する代わりに、一部のストアドプロシージャに限定して使用してください。または、DBに直接アクセスするのではなく、(Web)サービスを介してアクセスしてください。次に、サービスでは安全に実行できるメソッドのみが公開されていることを確認します。
ソースコードに保存しないでください。 – Tudor
難読化は解決策になる可能性があります。しかし、私はむしろこのタイプのものにWebサービスを使用したいと考えています。 – gbianchi
OpenID –