【问题标题】:Programatically changing the connection string in web.config file以编程方式更改 web.config 文件中的连接字符串
【发布时间】:2014-08-09 12:24:15
【问题描述】:

在我的asp.net应用程序中,第一次启动应用程序时,如果没有提供数据库连接,它将重定向到单独的页面要求输入数据库详细信息,如果他们提供了有效的详细信息,我们必须创建新的数据库,并且需要在整个应用程序中使用该连接字符串。

这是我的场景,创建数据库后,我以编程方式将连接字符串存储在 web.config 文件中,但是当我尝试重用连接字符串时,它显示为空字符串。

我知道 web.config 文件只给出我们在编译时提供的值。为了克服这种情况,我使用 XML 文件来存储连接字符串,该字符串不安全,无法存储安全和敏感信息。因为我的应用程序应该能够从前端更改连接字符串。

我的问题是:

  1. 有什么方法可以安全地存储连接字符串,并且如果从应用程序更改,则必须动态更改。
  2. 我可以通过浏览器访问我的 XML 文件,并且可以查看所有连接详细信息,如何限制从 URL 访问 XML 文件。

以及任何其他更好的解决方案表示赞赏。

【问题讨论】:

  • “我知道 web.config 文件只给出我们在编译时提供的值” - 这不是 *.config 文件的工作方式。专注于配置问题,您应该能够从代码更新配置文件并在运行时读取新值。创建一个小程序来解决该问题,然后将其合并到您的项目中。如果您希望任何人能够帮助解决您的问题,您需要展示您的(相关!)代码。

标签: asp.net security web.config-transform


【解决方案1】:

1 ) 有什么方法可以安全地存储连接字符串,并且如果从应用程序更改,则必须动态更改。

为什么不加密存储连接字符串?连接字符串只是一个字符串,因此您可以将它存储在 XML 甚至另一个数据库中。您需要让您的代码将此作为连接字符串读取,而不是来自web.config 的字符串。 ASP.NET 应用程序不需要从web.config 读取连接字符串。

2) 我可以通过浏览器访问我的 XML 文件,并且可以查看所有连接详细信息,如何限制从 URL 访问 XML 文件。

将您的文件存储在/App_Data 中 - 这是一个特别受保护的 .NET 文件夹,不允许通过 Web 服务器进行访问。即http://www.example.com/App_Data/foo.xml 无法读取。

【讨论】:

  • 感谢您的回答,我肯定会尝试实施它,我问这个,因为如果有任何替代方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2015-08-10
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多