LINQ to SQL 中的安全性

连接到数据库时,始终存在安全风险。 尽管 LINQ to SQL 可能包含使用 SQL Server 中的数据的一些新方法,但它不提供任何其他安全机制。

访问控制和身份验证

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

映射和架构信息

拥有文件系统访问权限的人均可访问对象模型或外部映射文件中的 SQL-CLR 类型映射和数据库架构信息。 假设架构信息可供所有可以访问对象模型或外部映射文件的人员使用。 若要防止对架构信息进行更广泛的访问,请使用文件安全机制来保护源文件和映射文件。

连接字符串

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

若要最大程度地降低此类风险,请使用集成安全性与 SQL Server 建立受信任的连接。 使用此方法时,无需在连接字符串中存储密码。 有关详细信息,请参阅 SQL Server 安全性

如果没有集成安全性,连接字符串中将需要明文密码。 帮助保护连接字符串的最佳方法,按照从低风险到高风险排列,如下:

另请参阅