15

次の接続文字列があります。

Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password

(.net webservice)これは、app.configファイルを開いて構成設定を確認するだけで明らかに表示できます。

私が必要としているのは、ハッカーがパスワードを見ることができないようにする方法です。ただし、同時に、別のデータベースにデプロイするときに変更できるように、カスタマイズ可能なままにしておきます。

4

5 に答える 5

17

いくつかのオプションがあります-私が知っているもの(優先順):

  1. 構成ファイルにパスワードを含める必要がない統合 (SSPI) セキュリティを使用する
  2. 接続文字列を暗号化します (「保護された構成を使用して構成情報を暗号化する」を参照) 。
  3. ユーザー名とパスワードを別々に保存し、文字列フォーマットを使用して完全な接続文字列を作成します。

たとえば、接続文字列は次のようになります。

Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}

私はオプション 1 を選びますが、それが不可能な場合はオプション 2 を選びます。完全を期すためにオプション 3 について言及しました。

接続情報の保護 (ADO.NET)を読みましたか?

于 2011-09-28T10:33:06.973 に答える
8

まず、「SA」アカウントを使用しないでください。誰かがパスワードを取得した場合、データベースは広く開かれたままになります。特定のデータベースでの CRUD 操作のみが許可されているカスタム アカウントを使用します。

入手する唯一の方法web.configは、サーバーをハッキングすることです。そして、彼らがそれをした場合、とにかくあなたはめちゃくちゃです.

于 2011-09-28T10:32:47.493 に答える
3

おそらく、web.config または app.config 内の接続文字列を暗号化するのが最も簡単です。

方法: DPAPI を使用して ASP.NET 2.0 で構成セクションを暗号化するを参照してください。

于 2011-09-28T10:32:11.913 に答える
2

接続文字列を暗号化/復号化することをお勧めします。したがって、接続文字列を手動で設定する必要があります。

暗号化については、http: //dotnet-snippets.de/dns/encrypt-and-decrypt-strings-SID205.aspxをご覧ください。

カスタム設定については、http: //msdn.microsoft.com/en-us/library/8eyb2ct1.aspxをご覧ください。

実行時に Encrypted を正しいものに置き換えます。

  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");
  }
于 2011-09-28T10:34:13.663 に答える
1

接続文字列を暗号化してから、接続文字列にアクセスするときに復号化できます。ただし、接続文字列を復号化するためのキーをどこに保存するかという問題に悩まされているため、これはばかげた証拠ではありません!

于 2011-09-28T10:32:44.940 に答える