1

我现在正在开发一个需要指向几个 SQL Server 表的链接的应用程序。我的 windows 网络帐户有权连接到此服务器,但我不会是唯一使用此应用程序的人。我将把它发送出去供人们保存到他们的 PC 上,或者只是把它放在公司共享驱动器上使用(我知道,这有时会提出问题)。为用户创建一个 Windows 帐户来共享是不方便的,因为他们需要注销并登录才能使用该应用程序,所以我想知道应用程序或 ODBC 连接文件本身是否可以存储访问表的凭据。

我是否应该将连接对象配置为使用 Windows 登录信息以外的其他内容(可能是 SQL 服务器用户名/密码),并将连接对象存储在共享位置?我对此没有太多经验,也没有尝试过很多不同的解决方案,我愿意接受建议。

感谢你的建议

4

2 回答 2

1

正如对该问题的评论中所建议的那样,一种解决方案是

  • 在 SQL Server 上的 Windows 中创建用户组,
  • 为该组创建 SQL Server 登录,
  • 将 SQL Server 中的权限分配给该登录名,
  • 然后根据需要从该组中添加或删除特定的 Windows 用户。

这样您就不需要为每个数据库用户弄乱各种 SQL Server 权限,并且您的应用程序可以使用 Windows 身份验证连接到 SQL Server,因此您不必弄乱已保存的 SQL Server 凭据(在连接字符串中,或其他地方)。

于 2014-01-15T20:40:52.353 回答
0

你当然可以在连接字符串中指定用户名和密码——如果你在连接字符串方面遇到问题,强烈推荐 ConnectionStrings.Com——他们的第一个 Sql Server 示例是

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

问题是安全性,如果用户可以在配置文件中看到这一点,他们就可以做任何帐户可以做的事情。如果你这样做,你必须在你的应用程序中处理安全性。大多数处理自己的安全性的应用程序必须在数据库表中创建用户和密码(最好根本不存储密码,更不用说明文了——建议使用单向哈希)。

一个好的策略是创建一个具有众所周知的名称和密码的“登录用户”帐户,根本不授予该帐户读/写等权限,并授予对单个存储过程的执行访问权限

IsLoginPermitted @ID, @PASS

成功后,IsLoginPermitted 返回 ID 和 PASS 以供后续使用(当然这些对用户是隐藏的),然后您根据这些创建新的连接字符串。

于 2013-11-12T20:00:31.897 回答