LINQ to SQL 中的安全性

更新:November 2007

连接到数据库时始终都存在安全风险。尽管 LINQ to SQL 可能包括一些使用 SQL Server 中的数据的新方法,但它并没有提供任何附加安全机制。

访问控制和身份验证

LINQ to SQL 没有自己的用户模型或身份验证机制。使用 SQL Server 安全性可控制对映射到对象模型的数据库、数据库表、视图和存储过程的访问。授予用户所需的最低访问权限并要求对用户身份验证使用强密码。

映射和架构信息

对象模型或外部映射文件中的 SQL-CLR 类型映射和数据库架构信息可供访问文件系统中的这些文件的所有用户使用。假设架构信息将供可访问对象模型或外部映射文件的所有用户使用。若要防止对架构信息进行更大范围的访问,请使用文件安全机制保护源文件和映射文件。

连接字符串

应尽可能避免在连接字符串中使用密码。连接字符串不仅会在自己的权限方面带来安全风险,而且在使用对象关系设计器或 SQLMetal 命令行工具时,连接字符串还可能会以明文形式添加到对象模型或外部映射文件。可通过文件系统访问对象模型或外部映射文件的任何用户都可以查看连接密码(如果该密码包含在连接字符串中)。

为了尽可能降低此类风险,请使用集成安全性与 SQL Server 建立可信连接。通过使用这种方法,您无需将密码存储在连接字符串中。有关更多信息,请参见 SQL Server 安全性 (ADO.NET)

如果缺少集成安全性,则连接字符串中将需要明文密码。帮助保护连接字符串的最佳方法如下(按风险升序排列):

请参见

概念

常见问题 (LINQ to SQL)

其他资源

背景信息 (LINQ to SQL)