如何保護我的連接字符串?我想在C#中使用實體框架4.1(第一代碼),但對其他人看不到我的連接字符串很重要。在實體框架中加密ConnectionString(第一個代碼)
6
A
回答
7
使用EF或任何其他ORM沒有區別,您可以使用加密連接字符串的標準方法並在調用EF的初始化之前將其解密,上下文將自動發生。
3
你可以逮捕(的DbContext或IdentityDbContext如果使用ASPNET標識)從上下文類連接字符串調用和修改連接字符串返回。在我的情況下,我不是加密整個連接字符串,而是選擇只加密密碼。您可以使用相同的方法來加密整個連接字符串。
注:此功能(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;
}
用來解析從連接字符串
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. 實體框架中的connectionString
- 3. 實體框架代碼第一
- 4. WPF和實體框架代碼第一
- 5. 實體框架代碼第一個只讀實體
- 6. 代碼第一個實體框架添加對象
- 7. 定義許多在代碼中第一個實體框架
- 8. 實體框架4和代碼第一CTP 5 - 缺少密鑰
- 9. 實體框架 - 代碼第一個關係:一對一個
- 10. 實體框架代碼第一個默認的SQL Server實例?
- 11. 實體框架代碼第一個雙一對一的關係
- 12. 嘲諷代碼第一實體框架的實體
- 13. 實體框架代碼第一個級聯刪除一對多
- 14. 實體框架 - 代碼第一 - 一個與共享主鍵
- 15. 實體框架代碼第一個DbConfiguration爲多個數據庫
- 16. 實體框架代碼第一個和多個程序集
- 17. 實體框架代碼第一次爲正數添加約束
- 18. 實體框架代碼第一次自定義加入
- 19. 加密/解密數據是數據庫第一實體框架
- 20. 在實體框架中爲關聯實體的計數添加一個屬性代碼第一個
- 21. 更改實體框架中的ConnectionString 4
- 22. 實體框架代碼第一個 - 共享的一對多實體
- 23. 實體框架代碼第一個默認數據庫位置
- 24. 代碼第一個實體框架繼承
- 25. 實體框架代碼第一個函數
- 26. 實體框架代碼第一個CTP5映射
- 27. 實體框架代碼第一個計算屬性
- 28. 實體框架代碼第一個錯誤
- 29. 實體框架代碼第一個原始集合
- 30. 使用代碼第一個實體框架初始化類
密碼tnkx很多的幫助和鏈接功能 – 2012-01-06 15:34:00