現在、C#のmysql接続情報をクラスファイル自体に格納していますが、それはスマートではないようです。エンドユーザーは、リフレクタを使用してobfruscated 。C#データベース接続情報を保護する
どうすればこれらの情報を安全に保存できますか?
ソースコード:
private void Initialize()
{
server = "xxx";
database = "xxx";
uid = "xxx";
password = "xxx";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new MySqlConnection(connectionString);
}
ローカルセキュリティに依存することは、どのような種類のセキュリティでもありません。複数の隔離されたエンドユーザーが接続するデータベースをリモートでホストする場合は、ユーザーにデータベースへの直接アクセスを許可するのではなく、Webサービス(API)を介して公開する必要があります。使用しているローカルセキュリティに関係なく、接続文字列を取得することは可能です。パスワードでさえ、リフレクションによって利用可能になる可能性があります。これは、MS SQL接続を使用しています。 – john
この詳細をweb.configまたはapp.configに保存し、それらが暗号化されていることを確認することをお勧めします。この投稿を確認してください。 http:// stackoverflow。com/questions/10168240/crypting-a-c-stringの暗号化 –
Webサービス(API)が利用できない場合、機密データを少なくとも暗号化できます。それはまだ得られるが、少なくとも誰もが得ることはできない。 – Vladimir