从ASP.Net应用程序创建新数据库的推荐方法

时间:2009-07-29 03:15:48

标签: asp.net security connection-string

我们的ASP.Net应用程序使用SQL Server 2008.大多数情况下,应用程序使用访问权限非常有限的SQL帐户连接到SQL Server。

然而,偶尔我们需要能够动态创建新的数据库。因此,我们需要提升权限,并且我有点担心将此连接字符串存储在Web.config中,该字符串可能位于DMZ中。

我们正在考虑编写Windows服务以在SQL Server计算机上运行(即不在DMZ中),该服务器将监视表以查找创建新数据库的请求,但这似乎有点过分。

有关替代方案或推荐做法的任何建议吗?

3 个答案:

答案 0 :(得分:1)

您可以将连接字符串存储在注册表中,并通过限制对指定注册表项的访问来保护它。这是我在.Net 1.1中遇到的一个想法,作为微软的推荐。 2.0和更高版本的概念仍然相同。这是文档的链接。

http://msdn.microsoft.com/en-us/library/aa302406.aspx

听起来你已经开始担心安全性了,所以我猜你已经阅读过或者至少遇到了MSDN库的“构建安全的ASP.Net应用程序”部分。上面的链接位于该指南的“操作方法”部分。希望这很有用。

此外,如果您将连接信息存储在web.config中,至少要加密这些部分。

我刚碰过这个。可能更像你在寻找的东西。

http://msdn.microsoft.com/en-us/library/aa302388.aspx#secnetch08_storingsecrets

答案 1 :(得分:1)

如果您在数据库连接字符串(I.E.,用户名和密码)中使用混合模式身份验证,那么您应该encrypt the web.config connectionStrings元素。

答案 2 :(得分:1)

使用存储过程创建数据库怎么样?我没试过;我担心的一个部分是通过变量指定数据库名称。通过使用存储过程,您只需要在存储过程中授予您的web id执行访问权限。

另一种选择是创建一个控制台应用程序(而不是服务)。然后使用作业计划程序每15或30分钟运行一次作业,或者根据请求运行该作业,如果您有一个有能力的计划程序。这比编写服务要简单得多;它只不是一个“即时”的过程。我为一些触发网站更新的Active Directory工作执行此操作(我不想给我的网站ID域管理员权限)。