次の接続文字列があります。
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password
(.net webservice)これは、app.configファイルを開いて構成設定を確認するだけで、明らかに表示できます。
私が必要としているのは、ハッカーがパスワードを見ることができないようにする方法です。ただし、同時に、別のデータベースにデプロイするときに変更できるように、カスタマイズ可能なままにしておきます。
あなたにはいくつかのオプションがあります-私が知っているもの(優先順に):
したがって、たとえば、接続文字列は次のようになります。
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}
オプション1を選択します。それが不可能な場合は、オプション2を選択します。完全を期すためにオプション3について説明しました。
接続情報の保護(ADO.NET) を読んだことがありますか?
まず、「SA」アカウントは使用しないでください。誰かがパスワードを取得した場合、データベースは大きく開いたままになります。特定のデータベースでのCRUD操作のみが許可されているカスタムアカウントを使用します。
web.config
を取得する唯一の方法は、サーバーをハッキングすることです。そして、彼らがそれをしたのなら、とにかくあなたは困惑しています。
Web.configまたはapp.config内の接続文字列を暗号化するのがおそらく最も簡単です
方法:DPAPIを使用してASP.NET 2.0の構成セクションを暗号化する を参照してください。
接続文字列を暗号化することができます-次に、接続文字列にアクセスするときに、それを復号化します。ただし、接続文字列を復号化するためのキーをどこに保存するかという問題に悩まされているため、これは絶対確実ではありません。
接続文字列を暗号化/復号化することをお勧めします。したがって、接続文字列は手動で設定する必要があります。
暗号化については、以下をご覧ください: http://dotnet-snippets.de/dns/encrypt-and-decrypt-strings-SID205.aspx
カスタム設定については、以下を参照してください。 http://msdn.Microsoft.com/en-us/library/8eyb2ct1.aspx
実行時に暗号化されたものを正しいものに置き換えます。
public static void SetAppSettingValue(string Key, string Value)
{
System.Configuration.Configuration config == ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting.
config.AppSettings.Settings[Key].Value = Value;
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}