我将以下代码与dapper ORM结合使用以连接到数据库:
using (IDbConnection db = new SqlConnection(ConnectionString()))
{
return db.Query<object>(Sql).ToList();
}
连接字符串包含数据库名称和登录信息。我想知道在建立与数据库服务器的连接时,是否有任何其他人可以看到这些信息。
答案 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凭证这样的东西是一种选择并且与帐户一样安全,这一点毫无价值。