【问题标题】:Storing Connection String on Database在数据库上存储连接字符串
【发布时间】:2010-08-26 14:57:54
【问题描述】:

我找不到适合这个目的的问题,所以我问它。

我们已经部署了一个 ASP.NET 网站,它有两个连接字符串,其中一个可以由用户在运行时配置。问题是,由于我使用 .NET Framework 来执行此操作,它会在 web.config 更改时创建一个临时文件,这迫使我的客户授予对整个网站文件夹的完全权限,而不仅仅是 web。配置文件。他对此不满意,经理质疑将其他连接字符串存储在同一个配置文件中。

所以我可以选择在一个单独的文件夹中创建一个单独的配置文件,这样他们就应该只授予该文件夹的全部权限,或者将其存储在数据库中。第一个选项和现在差不多,所以问题是:

在数据库中存储 ConnectionString 怎么样?

请注意,我说的不是应用程序 ConnectionString,而是一个替代方案,因为该应用程序将像三个应用程序一样集成。

各位,给我说说将它存储在数据库中的优点和缺点,优点和缺点。

【问题讨论】:

  • 如果您决定将连接字符串存储在数据库中,请考虑对其进行加密。特别是如果它包含用户名和密码(即您没有使用 Windows 身份验证)。
  • 是的,如果我将它存储在数据库中,我当然会加密它。

标签: c# .net asp.net database connection-string


【解决方案1】:

如果用户正在使用具有自己的数据库的应用程序连接到他选择的第二个数据库并且需要能够在运行时更改它,那么是的,将其存储在数据库中。这是某种自助服务托管应用程序吗?

设置文件用于由管理员更改的内容。当期望应用程序用户(或应用程序开发人员)而不是系统管理员对设置文件进行更改时,最好将其放入数据库中。

【讨论】:

    【解决方案2】:

    我不会在数据库中存储连接字符串。

    我会改用Settings File(可以在运行时修改设置文件,而不会像 web.config 那样重新编译应用程序)。

    您还可以为不同的设置提供不同的范围(用户、应用程序等),以便每个用户都可以存储自己的配置(如果您愿意),而不会影响到其他任何人。

    【讨论】:

    • 设置文件存储在哪里?运行网站的帐户是否需要对该文件夹的写入权限(我假设是这样!)?
    • 这样我可以将单独的设置文件放在另一个文件夹中,并授予它完整的权限。谢谢
    【解决方案3】:

    将其存储在数据库中

    如果它是有关您的用户的数据的一部分并且与此应用程序的设置无关,我会将其存储在数据库中,而不是任何其他地方。它与任何其他用户数据没有什么不同。

    好处

    1. 不存储在任何公众可以获取的地方 - 尽管 ASP.net 的 ISAPI 过滤器不允许正常访问它,但你永远不知道接下来会弹出什么漏洞
    2. 很容易将其与用户的其他数据相关联 - 因为它与您网站的用户相关联,这很有用
    3. 没有安全问题 - 无需在任何地方设置任何特殊权限

    【讨论】:

      【解决方案4】:

      你可以在你的 web.config 上使用类似的东西

      <add name="ConnectionString" connectionString="Data Source={0};Initial Catalog={1};User ID={2};Password={3}" providerName="System.Data.SqlClient" />

      然后使用string.Format()设置各个参数的不同值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-19
        • 2011-05-24
        • 2019-03-31
        • 1970-01-01
        • 2017-06-01
        • 2011-08-11
        • 2011-05-09
        • 1970-01-01
        相关资源
        最近更新 更多