使用SqlConnection()和连接字符串连接到数据库是否安全
本文关键字:连接 数据库 是否 安全 字符串 使用 SqlConnection | 更新日期: 2023-09-27 18:06:27
我正在使用以下代码与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
的connection-string上的"Persist Security Info"参数有关,该参数默认为false。基本上,一旦提供了凭据,.ConnectionString
属性就不会公开。注意,string
在某些时候仍然存在于内存中,因此对进程和内存分析工具具有原始访问权限的人可能仍然能够获得它;见https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring (v = vs.110) . aspx
然而,你也可以通过SSPI使用Windows身份验证-这只是使用应用程序域的执行用户身份信息来连接。与上面的链接相同,但请参阅"集成安全"连接字符串参数。
在本地计算机上:是的,访问信息是可能的
Over Network DB Connections:取决于DB, SQL Server支持SSL,但是如果你不使用SSL,那么你将在你的流量中暴露信息
这完全取决于从哪里建立连接以及连接到哪里。
如果任何一端在某人手中,例如,在分布式客户端中,那么他们将能够获得连接细节。然而,通常情况下,连接是在"幕后"建立的,就像从web服务器到数据库一样。因为像这样建立的连接都是"服务器端"的,所以连接字符串对应用程序的"客户端"永远不可见,因此通常被认为是安全的——当然,它仍然受基础设施的支配!:)
如果这是像在域上运行的厚客户端那样的东西,那么使用Windows凭据之类的东西是一种选择,并且会像帐户一样安全。