【问题标题】:c# - hiding a connection in a .dllc# - 在 .dll 中隐藏连接
【发布时间】:2021-08-25 13:37:10
【问题描述】:

我是 C# 新手,但我需要更改现有程序,只需更改连接字符串即可。这个想法是将连接重定向到测试数据库环境。我发现代码使用 dll 来创建与服务器的连接。我使用 Jetbrains Dotpeek 查看 dll 内部,但我只能看到方法和函数,但我无法看到更改它的连接细节。

有哪些加密连接字符串的方法?是否有通常用于此的特殊文件,我可以查找?

提供更详细的信息:

在cs文件的正常代码中,例如有这样的:

var result = new LibSqlQuery(Db.ABC.ConnectionString, sql);
return result;

而 Db 是 dll 中的一个方法,定义如下:

public static class Db
{
    private static Dictionary<string, LibDbConnection> _connections = new Dictionary<string, LibDbConnection>();

    private static LibDbConnection GetConnection(string connectionName)
    {
      lock (Db._connections)
      {
        if (!Db._connections.ContainsKey(connectionName))
          Db._connections.Add(connectionName, new LibDbConnection(connectionName));
      }
      return Db._connections[connectionName];
    }

    public static LibDbConnection ABC => Db.GetConnection("conABC");

    public static LibDbConnection CDE => Db.GetConnection("conCDE");
}

其中 ABC 和 CDE 是数据库环境。

【问题讨论】:

  • 通常.NET 应用程序会在配置文件中维护一个数据库连接字符串。
  • 连接字符串本身(希望)不是硬编码的。例如,oracle 将它们的连接存储在 tnsnames.ora 文件中。我假设 DLL 只负责根据传递的参数连接到数据库。你用的是什么数据库?
  • 我们正在使用 SQL-Server。
  • 在可以使用 SQL Server 集成安全性的企业环境中,加密连接字符串会导致用户管理不善。如果您在域下,您可以创建 Windows 安全组(域组)并授予 SQL Server 中这些组的登录权限。所以连接字符串中没有密码,也不需要加密。另外还有一种管理应用程序访问权限的简单方法(只需将用户添加/删除到组中)

标签: c# encryption dll dotpeek


【解决方案1】:

我找到了另一个配置文件,其中包含连接。现在可以关闭了。谢谢。

【讨论】:

    猜你喜欢
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多