实体框架6.0 +加密连接字符串

时间:2014-01-26 05:32:12

标签: c# sql entity-framework encryption

这个问题可能会重复,但我们无法找到一个好的解决方案。

我们的项目使用EF 6.0& C#,针对.NET 4.0及更高版本,最后是SQL Server 2012。

该项目没有正常工作。但是对EF连接字符串及其存储方式的查询很少。

  1. 如何读取存储在app.config中的加密连接字符串,以便在EF的context.cs文件中读取。
  2. 我们添加了以下代码来读取加密的连接字符串,它只在某种程度上有效,即直到我们不添加新的存储过程。

    public MCMS_II_LogEntities() 
        // : base("name=MCMS_II_LogEntities") //Original
        :base( GetConnectionString())
        {
        }
    
    public static string GetConnectionString()
    {
        string connString = new System.Data.EntityClient.EntityConnectionStringBuilder
        {
            Metadata = "res://*",
            Provider = "System.Data.SqlClient",
            ProviderConnectionString = new System.Data.SqlClient.SqlConnectionStringBuilder
            {
                InitialCatalog = "<Catalog Name>",
                DataSource = ConfigurationManager.AppSettings["DataSourceAddress"].ToString(),
                IntegratedSecurity = false,
                MultipleActiveResultSets = true,
                UserID = "<LOGIN ID>",                 // User ID such as "sa"
                Password ="<PASSWORD>",               // hide the password
            }.ConnectionString
        }.ConnectionString;
        return String.Format(connString);
    }
    
  3. 将新存储过程或函数添加到EF模型后,将删除上面添加的编码。

  4. 查询

    1. 实现这一目标的最佳做法是什么?
    2. 如何解决此问题。

1 个答案:

答案 0 :(得分:-1)

在开发过程中,你不应该编码/加密数据库连接字符串,这是一个痛苦的屁股。加密应在部署/升级阶段完成,而不是在开发期间完成。

在加密后测试连接字符串。准备好将代码移动到QA或PROD时加密它。