【问题标题】:advice on best practice when connecting ASP.NET application to SQL Server将 ASP.NET 应用程序连接到 SQL Server 时的最佳实践建议
【发布时间】:2010-10-04 14:59:54
【问题描述】:

我有一个使用会员功能的 ASP.NET 应用程序。我连接到包含 aspnet_membership 架构的 SQL Server 数据库。我目前在我的应用程序的连接字符串中使用“sa”和 sa 密码,我知道这是一件可怕的事情。我的问题是,连接字符串的最佳选择是什么?我应该在 sql 数据库名称“MyAppUser”(或其他名称)中创建一个用户并将 aspnet_membership_fullcontrol 模式分配给该用户吗?这样,应用程序可以连接并获得完全控制权限,然后根据我写入应用程序的逻辑限制单个用户的访问权限。

这是一个好方法吗? (访问权限仅限于应用程序使用的特定数据库,而不是其他任何数据库)。

如果没有,在使用 ASPNet 成员资格时,有什么更好的方法可以避免在我的连接字符串中使用用户“sa”?

感谢您提供的任何建议。

【问题讨论】:

    标签: asp.net sql-server connection-string


    【解决方案1】:

    如果这是一个内部应用程序,您可以使用 windows 身份验证(集成安全性 = true),否则为您的应用程序创建一个 sql 登录,将数据库映射到用户并应用足够的权限(可能是读/写)。

    【讨论】:

    • 感谢您的回复。我使用的是 SQL Server 身份验证,而不是 Windows。所以我创建了一个登录名,并赋予它让一切正常工作所需的权限。不幸的是,它似乎需要 dbo 权限才能运行我编写的存储过程。我想改变它,所以我会继续调查。这绝对是一种改进,因为我至少只能有限地访问它需要的数据库,这就是进步。谢谢你的回答。
    • 您还需要设置存储过程本身的权限 - 右键单击​​ SP 并转到属性,然后单击权限。
    • 或者创建一个架构并将您的用户分配给该架构,然后在该架构下创建您的 sp - 阅读此内容 - vyaskn.tripod.com/sql_server_security_best_practices.htm ,此 msdn.microsoft.com/en-us/library/ms190387.aspx 并在 SQL Server 安全性上使用 Google总的来说 - 它有很多内容,但最终还是相当简单的(尽管 2008 年确实让它变得更加复杂)
    【解决方案2】:

    是的 - 为此项目创建一个特定的用户和密码,并将这些详细信息存储在 app.config 或 web.config 文件中,然后从那里开始。

    如果您使用受信任的连接,那么您实际上无法控制哪个用户可以访问数据库,这意味着以后的调试会更加困难。

    【讨论】:

    • 你可以让 SQL Server 告诉你这个 - 我不记得它是什么,比如 sysuser、user、current_user、sys.user - 类似......你可以将它设置为列的默认值,或在查询中使用它。
    【解决方案3】:

    对于 windows 应用程序,我们通常使用 windows 身份验证。如果我们确实需要使用特定的用户/密码,我们将加密此信息并将其存储为 appsetting 键/值对。

    对于 asp.net 应用程序,我们通常为该应用程序创建一个 sql 登录名并将密码存储在 web 配置中。然后我们将加密 web 配置文件的连接字符串部分

    有关如何执行此操作的说明,请参阅以下链接: http://msdn.microsoft.com/en-us/library/ff647398.aspx

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 2020-05-05
      相关资源
      最近更新 更多