C#和SQL Server身份验证

Pet*_*ter 6 c# sql-server authentication

我目前正在开发一个带有SQL Server DB后端的C#应用​​程序.我正在接近部署点并遇到问题.应用程序将部署在活动目录网络中.就SQL身份验证而言,我知道我有两个选项--Windows Authenticaon或Server Authenticaiton.

如果我使用服务器身份验证,我担心帐户的用户名和密码将以纯文本形式存储在app.config文件中,因此会使数据库容易受到攻击.

使用Windows Authenticait将避免此问题,但这意味着为组织内的每个成员提供对数据库的读/写访问权限,以便正确运行应用程序.虽然这没关系,但这也意味着他们可以通过其他方式轻松连接到数据库,并直接更改应用程序外部的数据.

我猜这里有一些非常明显的我在这里失踪,但我整晚都在谷歌搜索无济于事.任何建议/指导将不胜感激!

彼得


另外 - 我的项目是Windows Form而不是ASP.NET - 加密app.config文件仍然是正确的答案?如果是,是否有人有任何不基于ASP.NET的示例?

mar*_*c_s 3

如果我使用服务器身份验证,我担心帐户的用户名和密码将以纯文本形式存储在 app.config 文件中,从而使数据库容易受到攻击。

您始终可以在 app.config 中创建连接字符串并加密该连接字符串部分。这适用于 ASP.NET 以及控制台应用程序、Winforms 应用程序、WPF 应用程序 - 它确实是一项 .NET 基础技术。

有关如何执行此操作的非 ASP.NET 示例,请参阅 Jon Galloway 的Encryping Passwords in a .NET app.config 。

使用 Windows Authenticaiton 将避免此问题,但这意味着为我们组织内的每个员工提供对数据库的读/写访问权限,以便正确运行应用程序。

是的 - 但你可以减轻负担:

  • 您可以验证 Windows/AD 组 - 该组成员的每个人都可以访问 - 无需单独授予每个用户权限

  • 如果您使用视图进行数据检索并使用存储过程进行插入/更新/删除,您甚至不需要为这些用户提供直接表访问权限,并且可以保护数据库免受不当操作