接続文字列を保護するにはどうすればよいですか? C#でEntity Framework 4.1(第1のコード)を使用したいが、他の人が自分のConnection Stringを見ることができないことは重要だ。エンティティフレームワーク(最初のコード)でEncrypt ConnectionString
6
A
答えて
7
EFまたは他のORMの使用に違いはありませんが、EFコンテキストの初期化を自動的に呼び出す前に、接続文字列を暗号化して解読する標準的な方法を使用できます。
3
あなたは(ASPNETアイデンティティを使用している場合DBContextまたはIdentityDbContext)コンテキストクラスからの接続文字列への呼び出しを逮捕し、接続を変更することができます文字列が返されます。私の場合、接続文字列全体を暗号化する代わりに、パスワードだけを暗号化することを選択しました。同じ方法を使用して、接続文字列全体を暗号化することができます。
注:機能(StringCipher.Decrypt)は暗号化および復号化するために使用されるこのスレッドから来た - >https://stackoverflow.com/a/1344255/1390025
ここでは、上記で
public YourDB()
: base(GetSqlConnection("DefaultConnection"))
{}
接続文字列への呼び出しを逮捕場所ですシナリオ私はapp.configまたはweb.configから接続文字列を取得しています。ただし、リクエストごとに、接続文字列全体を暗号化することができ、以下の例のようにすることができます。
public YourDB()
: base(StringCipher.Decrypt("your-encrypted-connection-string", "passphrase-used-to-encrypt"))
{}
パスワードのみが暗号化されているシナリオでは、以下の関数は暗号化されたパスワードをプレーンテキストに置き換えて接続文字列を返します。
public static string GetSqlConnection(string connectionStringName = "DefaultConnection")
{
// optionally defaults to "DefaultConnection" if no connection string name is inputted
string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
string passPhrase = "passphrase-used-to-encrypt";
// decrypt password
string password = get_prase_after_word(connectionString, "password=", ";");
connectionString = connectionString.Replace(password, StringCipher.Decrypt(password, passPhrase));
return connectionString;
}
あなたの助けとリンクについては多くtnkx接続文字列
public static string get_prase_after_word(string search_string_in, string word_before_in, string word_after_in)
{
int myStartPos = 0;
string myWorkString = "";
// get position where phrase "word_before_in" ends
if (!string.IsNullOrEmpty(word_before_in))
{
myStartPos = search_string_in.ToLower().IndexOf(word_before_in) + word_before_in.Length;
// extract remaining text
myWorkString = search_string_in.Substring(myStartPos, search_string_in.Length - myStartPos).Trim();
if (!string.IsNullOrEmpty(word_after_in))
{
// get position where phrase starts in the working string
myWorkString = myWorkString.Substring(0, myWorkString.IndexOf(word_after_in)).Trim();
}
}
else
{
myWorkString = string.Empty;
}
return myWorkString.Trim();
}
関連する問題
- 1. エンティティフレームワークのコードを最初に
- 2. エンティティフレームワークで最初にタイムスタンプ型のコード
- 3. エンティティフレームワークのコード最初の移行ファイルソースコントロール
- 4. エンティティフレームワーク4.2コードの最初の機能
- 5. エンティティフレームワーク - コード最初の関係マッピング
- 6. エンティティフレームワークTPH継承コード最初の型
- 7. エンティティフレームワークのコード最初の1から1..0の関係
- 8. コード最初のエンティティフレームワークの接続文字列
- 9. エンティティフレームワークのコードの最初の接続状態のチェック
- 10. エンティティフレームワークのコード最初の1対1の関係
- 11. コード最初のエンティティフレームワーク多対多の関係
- 12. エンティティフレームワーク4.1最初のコードと自動マッパーの問題
- 13. ストアドプロシージャ関数のインポートとエンティティフレームワークのコード最初
- 14. エンティティフレームワークのコードが最初に:DbSetsとナビゲーションのプロパティ
- 15. エンティティフレームワークのコード最初に2つ1対1の関係
- 16. エンティティフレームワーク(EF)コード最初のカスケード削除と1対0の関係
- 17. エンティティフレームワークのコードが最初に、いくつかのアドバイスが必要
- 18. エンティティフレームワーク。複数のDbContext複数のデータベース。 MySQL。コードを最初に
- 19. エンティティフレームワークのコードが最初に間違って保存される
- 20. エンティティフレームワーク5のコードが最初にnewsequentialid()としてPK
- 21. エンティティフレームワーク - 最初にコードするか、モデルにするか?
- 22. エンティティフレームワークでコードを最初に開発した後のデプロイメントの問題
- 23. 外部キーのプロパティが無効ですか? (エンティティフレームワークのコードを最初に)
- 24. dbテーブルがコード内で自動的に消滅する最初のエンティティフレームワーク
- 25. エンティティフレームワークで複数のテーブルにコードを最初に接続する方法
- 26. エンティティフレームワークのコード最初の逆の特性生成された列名
- 27. エンティティフレームワークのコード最初に他のプロジェクトからモデルを追加する
- 28. エンティティフレームワークのコード最初に異なるプロジェクトのデータベースを更新します
- 29. エンティティフレームワークのコードを最初に使用するリバースエンジニアリング - エンティティおよびビジネスクラス
- 30. エンティティフレームワーク5のコードは、最初にグローバルにvarcharにマップされます
からパスワードを解析するために使用される機能 –