2010-05-26 172 views
6

我目前正在开发与SQL Server数据库后端一个C#应用程序。我正在接近部署点并遇到问题。应用程序将部署在活动目录网络中。至于SQL认证推移,我明白,我有两个选择 - 视窗Authenticaiton或服务器Authenticaiton。C#和SQL Server身份验证

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

使用Windows Authenticaiton可以避免此问题,但这意味着要让我们组织内的所有员工都可以读取/写入数据库访问权限,以正确运行应用程序。虽然这是好的,它也意味着它们可以很容易地通过其它手段连接到数据库自己和直接修改应用以外的数据。

我猜有成才真的很明显我缺少在这里,但我一直都晚上google搜索无果。任何意见/指导将非常感谢!

彼得


加法 - 我的项目是基于Windows窗体不是ASP.NET - 被加密app.config文件仍然是正确的答案?如果是,没有任何人有没有ASP.NET基于任何的例子吗?

+0

这是一个winforms应用程序? – 2010-05-26 21:00:41

+0

是的,它是一个winforms应用程序 – Peter 2010-05-26 21:10:07

+1

更新了我的答案,并提供了一个指向如何加密保护的app.config(而不是web.config)文件的通用.NET示例链接 – 2010-05-26 21:19:27

回答

3

如果我使用服务器身份验证,我是 ,有关该帐户的用户名和密码为 将 以纯文本形式存储在app.config中 文件,并因此离开数据库 脆弱。

您可以随时在app.config和encrypt that connection string section中创建连接字符串。这适用于ASP.NET以及控制台应用程序,Winforms应用程序,WPF应用程序 - 这确实是一个.NET基础技术。

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

使用Windows Authenticaiton将 避免这个问题,但它会 意味着放弃我们的组织内读取员工 的每一个成员/写 访问数据库,以便正确地运行 应用程序。

是 - 但你可以减轻负担:

  • 可以进行身份​​验证的Windows/AD组 - 大家谁是该组的成员可以访问 - 不需要单独权限每个用户

  • 如果你使用数据检索和存储过程的视图进行插入/更新/删除,你甚至不需要给这些用户直接的表访问,你可以屏蔽你的数据库不适当的操纵

0

最简单的办法是存储在web.config中的用户名和密码,然后encrypt them

+0

我正在阅读的大多数文章似乎使用Web项目加密(ASP.NET),但我的项目是一个Windows窗体。是否可以应用相同的原则,还是有其他需要注意的地方? – Peter 2010-05-26 21:01:03

+0

@Peter Greenall:适用于任何.NET应用程序 - 我已将它用于控制台应用程序,Winforms,ASP.NET - 它不仅限于ASP.NET,即使大多数示例都是ASP.NET – 2010-05-26 21:03:00

0

您可以随时加密app.config中的数据。

这个link有更多信息。

相关问题