将数据库密码注入默认 EF 连接字符串的最佳位置在哪里

2024-03-14

实体数据模型向导说:

此连接字符串似乎包含连接到数据库所需的敏感数据(例如密码)。在连接字符串中存储敏感数据可能存在安全风险。您想在连接字符串中包含这些敏感数据吗?

我选择了“否”,并在 Web.config 中发现了以下生成的新连接字符串:

 <add name="eMarket_DBEntities" connectionString="metadata=res://*/App_Code.EFModel.csdl|res://*/App_Code.EFModel.ssdl|res://*/App_Code.EFModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=eMarket_DB;user id=sa;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient;" />

同样在 Web.config 中:

  <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />

如何以及在哪里一次性传递密码以作为 EF 默认值的最佳位置?


有两种方法可以在 Web.Config 中不包含密码。

  1. 将密码放入 IIS 的主机设置中。 IIS 为每个主机多保留一个主机配置,并且该主机配置中的所有设置都会在 web.config 之前应用。唯一的问题是,只有管理员可以通过 IIS 管理控制台修改它。

  2. 无密码连接字符串将使用应用程序池身份用户进行登录。您可以创建一个 Windows 用户并将其设置为应用程序池标识。并授予对站点内容文件夹的读取权限。并在 SQL 数据库中添加此用户并使该用户成为 db-owner。这是托管站点的最安全方法,因为每个应用程序池都以隔离方式运行,并且可以为每个应用程序授予更多权限。唯一的问题是,任务管理器不再显示工作进程的站点名称。

在共享主机中,任何有权访问控制面板的人都可能可以访问所有内容,您几乎无法采取任何措施来保护它,但这就是我们的做法。

  1. 我们为开发人员创建单独的 FTP 登录来上传代码。
  2. 管理员设置配置文件,开发人员永远不会上传 web.config。如果他们上传错误,管理员将登录到某个控制台或 ftp 并修改 web.config
  3. 开发人员不应被授予共享托管控制面板的管理员访问权限。设置网站以及上传代码和编辑 web.config 必须由管理员完成。
  4. Windows Azure 网站允许您在管理控制面板中修改 web.config。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据库密码注入默认 EF 连接字符串的最佳位置在哪里 的相关文章

随机推荐