使用SqlConnection()和连接字符串连接数据库安全吗?

3

我正在使用以下代码与Dapper ORM一起连接到数据库:

using (IDbConnection db = new SqlConnection(ConnectionString()))
{
return db.Query<object>(Sql).ToList();
}

连接字符串包含数据库名称和登录信息。我想知道在连接到数据库服务器时,是否有任何人可以看到这些信息。
3个回答

1

如果您指的是传输中:您可以强制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

然而,您也可以通过SSPI使用Windows身份验证 - 这样只需使用应用程序域的执行用户标识信息进行连接。与上面相同的链接,但请参阅“Integrated Security”连接字符串参数。

1

在本地计算机上:是的,可以获取信息。

通过网络DB连接:取决于数据库,SQL Server支持SSL,但如果您不使用它,则会在流量中暴露信息。


0

这完全取决于连接建立的位置和目标位置。

如果任何一端由某人掌握,例如分布式客户端,则他们将能够获取连接详细信息。通常,连接是在“幕后”建立的,比如从Web服务器到数据库。因为像这样建立的连接都是“服务器端”的,所以连接字符串对应用程序的“客户端”永远不可见,因此通常被认为是安全的 - 当然,它仍然受基础设施的影响! :)

值得注意的是,如果这是在域上运行的厚客户端之类的东西,那么使用诸如Windows凭据之类的东西是一个选项,并且与帐户一样安全。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接