加密连接字符串

3
我们已经创建了Web API,它可以与Oracle数据库建立连接,就像这样:
using (OracleConnection dbconn = new OracleConnection("DATA SOURCE=J;PASSWORD=CM;PERSIST SECURITY INFO=True;USER ID=TR"))

当我们在IIS中发布时,希望它能够加密。我们需要在web.config文件中进行相关配置。 在从VS发布到文件系统后的web.config文件中,我只看到了以下代码。我是否需要创建一个名为dbconn的新连接字符串,就像在控制器代码中所给出的那样。

<oracle.manageddataaccess.client>
 <version number="*">
  <dataSources>
    <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
  </dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
 <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=oracle_user;Password=oracle_user_password;Data Source=oracle" />
</connectionStrings>

首次创建应用程序。非常感谢任何帮助。


在web.config中直接提供用户名和密码并不安全,有没有其他方式可以保护它们?另外,在发布的web.config文件中是否需要放置新的连接字符串? - trx
在web.config中以明文形式存储用户名/密码是常见的密码方式(虽然你可以加密,但并没有太大的收益)。你真正应该做的不是担心在web.config中加密某些内容,而是确保你的服务器已经被加固,并且通过最低权限的用户连接你的Web应用程序。 - mituw16
您可以在此处了解哈希和加密之间的区别。https://dev59.com/b2445IYBdhLWcg3wRoPH#4948393 - mituw16
我需要在web.config中创建一个新的连接字符串dbconn,并包含所有的用户名和密码吗?因为当我从VS发布时,这个连接字符串并不存在。 - trx
Windows实际上有一个内置机制,可以在.config文件中加密这种数据。搜索“DPAPI(数据保护API)”。请注意,密码必须在将要读取它的计算机上进行加密 - 因此您可能需要一些安装程序来为您完成这项工作。 - RB.
显示剩余4条评论
1个回答

5

加密连接字符串和web.config的许多其他部分是标准做法。 这样做的标准方式是使用位于%windows%\Microsoft.NET\Framework\<versionNumber>Aspnet_regiis.exe工具。这很容易做到。 这里有一个教程。


我已经理解了加密部分。我将对连接字符串进行加密,即使用以下命令对web.config中的“connectionStrings”进行加密:aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"。然后在应用程序中使用该连接字符串。请问我应该在哪里进行解密? - trx
@trx 解密将由 .net 自动完成。您将在应用程序中看到已解密的连接字符串。当您部署到 Web Farm 时,还需要执行一些额外的步骤。只有在编辑配置时(即数据库服务器更改位置、用户凭据更改等)才需要解密连接字符串。在上述链接中,有一个指南告诉您如何做到这一点。 - pepo
我一直收到错误提示,说无法为请求的配置对象创建配置文件。失败了! - trx
我尝试以不同的方式给出命令,但是我得到了相同的错误消息:无法为请求的配置对象创建配置文件。例如,aspnet_regiis -pe "connectionStrings" -app "/E:\Dropbox\NewTestAPI" -prov "RsaProtectedConfigurationProvider" 或者给出在IIS中创建的网站的物理路径,如 aspnet_regiis -pe "connectionStrings" -app "/E:\Dropbox\ABC\TestAPI" -prov "RsaProtectedConfigurationProvider" 我甚至尝试给出站点ID,如 aspnet_regiis -pe "connectionStrings" -app "/E:\Dropbox\ABC\TestAPI" -site "3" -prov "RsaProtectedConfigurationProvider" - trx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接