asp.net-mvc - ASP.NET MVC 4 - 我应该如何加密生产 SQL 服务器的连接字符串?

标签 asp.net-mvc deployment encryption asp.net-mvc-4 azure-sql-database

我有一个 ASP.NET MVC 4 项目,要部署到 Azure 进行生产,在生产中我使用 SQL Azure 数据库。我的问题是,我只想在生产部署中连接到 SQL Azure 数据库,而不是在开发时连接,并且 SQL Azure 连接字符串应该加密。

现在,我可以通过 Web.config 转换解决第一个要求,以便在部署到 Azure 时替换数据库连接字符串。但是,我不知道如何将其与连接字符串加密结合起来?如何在部署时既加密 SQL Azure 连接字符串又将其替换为开发连接字符串?这种情况的最佳实践将受到欢迎:)

最佳答案

我认为这里一个好的解决方案是输入产生式 <connectionStrings>部分进入 Web.config 并加密它,然后移动加密的 <connectionStrings>部分到转换文件(例如 Web.Release.config)中并对其进行注释,以便它替换整个 <connectionStrings>转型部分。这实现了使用同样加密的生产连接字符串部署 Web.config 的目标。

我已按照“保护 Windows Azure 中的连接字符串的安全”部分 1 中的指南进行操作。 , 2 , 34了解如何加密 Web.config。我建议为了完整的引用,其他人也这样做。我将概述为解决我的场景而执行的主要步骤。

更新 <connectionStrings> 后Web.config 中具有生产设置的部分,我安装了 Pkcs12 Protected Configuration Provider并运行 aspnet_regiis.exe 来加密该部分(在 Visual Studio 命令提示符中,位于项目目录中):

aspnet_regiis -pef "connectionStrings" "." -prov "CustomProvider"

我还添加了 CustomProvider 的定义到Web.config:

<configProtectedData>
  <providers>
    <add name="CustomProvider" thumbprint="<your thumbprint here>"
       type="Pkcs12ProtectedConfigurationProvider.Pkcs12ProtectedConfigurationProvider, PKCS12ProtectedConfigurationProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=34da007ac91f901d"/>
  </providers>
</configProtectedData>

之后我移动了加密的<connectionStrings>部分到 Web.Release.config(用于在部署到 Azure 时转换 Web.config),并注释该部分,以便它替换 Web.config 中的相应部分:

connectionStrings configProtectionProvider="CustomProvider" xdt:Transform="Replace">
...
</connectionStrings>

终于恢复了开发<connectionStrings> Web.config 中的部分。我测试了这个解决方案,发现部署的Web.config包含加密的<connectionStrings>部分,就像我之后的那样。

关于asp.net-mvc - ASP.NET MVC 4 - 我应该如何加密生产 SQL 服务器的连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921936/

相关文章:

encryption - BCrypt 的主要 C/C++ 库是什么?

cocoa - 如何在 cocoa 应用程序中存储文件然后稍后访问它以加密

asp.net-mvc - 在单声道下从 asp.net mvc 应用程序安全地运行 linux 命令行应用程序

asp.net-mvc - 如何将 URL 参数绑定(bind)到具有不同名称的模型属性

reactjs - Create-React-App/React Router 无法通过渲染进行部署

azure - Bot Framework 从 VS 2019 发布并部署到 Azure - 缺少文件

c# - 为填充数据建立一对多关系

asp.net-mvc - 使用布局时在 Razor View 和部分前面添加/附加注释 (ASP.NET MVC 4)

使用 sqlite 数据库部署 Django 应用程序

c++ - 如何在凯撒密码破译作业中使用英语字母频率?