我正在使用以下代码与Dapper ORM一起连接到数据库:
using (IDbConnection db = new SqlConnection(ConnectionString()))
{
return db.Query<object>(Sql).ToList();
}
连接字符串包含数据库名称和登录信息。我想知道在连接到数据库服务器时,是否有任何人可以看到这些信息。
我正在使用以下代码与Dapper ORM一起连接到数据库:
using (IDbConnection db = new SqlConnection(ConnectionString()))
{
return db.Query<object>(Sql).ToList();
}
如果您指的是传输中:您可以强制SQL Server使用加密连接 - https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx
如果您指的是进程内部 - 默认情况下,关键部分被删除,因此它们不会轻易地对其他使用SqlConnection
实例的代码可用;这与SqlConnection
的连接字符串上的“Persist Security Info”参数相关,默认值为false。基本上,.ConnectionString
属性一旦提供了凭据,就不会再公开它们。请注意,string
仍然可能在某个时刻存在于内存中,因此拥有原始访问权限和内存分析工具的人仍然可能获取它;参见https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx
在本地计算机上:是的,可以获取信息。
通过网络DB连接:取决于数据库,SQL Server支持SSL,但如果您不使用它,则会在流量中暴露信息。
这完全取决于连接建立的位置和目标位置。
如果任何一端由某人掌握,例如分布式客户端,则他们将能够获取连接详细信息。通常,连接是在“幕后”建立的,比如从Web服务器到数据库。因为像这样建立的连接都是“服务器端”的,所以连接字符串对应用程序的“客户端”永远不可见,因此通常被认为是安全的 - 当然,它仍然受基础设施的影响! :)
值得注意的是,如果这是在域上运行的厚客户端之类的东西,那么使用诸如Windows凭据之类的东西是一个选项,并且与帐户一样安全。