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

时间:2016-09-08 21:46:48

标签: c# dapper sqlconnection

我将以下代码与dapper ORM结合使用以连接到数据库:

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

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

3 个答案:

答案 0 :(得分:1)

如果您的意思是传输:您可以强制SQL Server使用加密连接 - https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx

如果您的意思是在进程中 - 默认情况下会删除关键部分,因此使用SqlConnection实例的其他代码无法轻松使用它们。这与&#34;持久安全信息&#34; SqlConnection连接字符串上的参数,默认为false。基本上,.ConnectionString属性一旦提供就不会公开凭证。请注意,string在某些时候仍然存在于内存中,因此对原始访问过程和内存分析工具的人仍然可以获得它;见https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx

但是,您也可以通过SSPI使用Windows身份验证 - 然后只使用app-domain执行用户身份信息进行连接。与上面相同的链接,但请参阅&#34;集成安全&#34;连接字符串参数。

答案 1 :(得分:1)

在本地计算机上:是的,可以访问信息

通过网络数据库连接:取决于数据库,SQL Server支持SSL,但如果您不使用它,那么您将在流量中公开信息

答案 2 :(得分:0)

这完全取决于建立连接的位置以及建立连接的位置。

如果任何一方在某人手中,例如在分布式客户端中,那么他们将能够掌握连接细节。然而,通常情况下,在幕后建立连接,例如从Web服务器到数据库。因为像这样建立的连接都是服务器端&#34;,所以&#34;客户端&#34;永远不会看到连接字符串。因此,应用程序通常被认为是安全的 - 当然它仍然受基础设施的支配! :)

如果这类似于在域上运行的胖客户端,那么使用像Windows凭证这样的东西是一种选择并且与帐户一样安全,这一点毫无价值。